Java >> Java tutorial >  >> Tag >> HashMap

Få et underkort fra et HashMap i Java

1. Oversigt

I vores tidligere selvstudie, A Guide to Java HashMap, viste vi, hvordan man bruger HashMap i Java.

I dette korte selvstudie lærer vi hvordan man får et underkort fra en HashMap baseret på en liste over nøgler.

2. Brug Java 8 Stream

Antag for eksempel, at vi har et HashMap og en liste over nøgler:

Map<Integer, String> map = new HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");

List<Integer> keyList = Arrays.asList(1, 2, 3);

Vi kan bruge Java 8-streams til at få et underkort baseret på keyList :

Map<Integer, String> subMap = map.entrySet().stream()
  .filter(x -> keyList.contains(x.getKey()))
  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

System.out.println(subMap);

Outputtet vil se sådan ud:

{1=A, 2=B, 3=C}

3. Brug retainAll() Metode

Vi kan få kortets nøglesæt og brug retainAll() metode til at fjerne alle poster, hvis nøgle ikke er i keyList :

map.keySet().retainAll(keyList);

Bemærk, at denne metode vil redigere det originale kort . Hvis vi ikke ønsker at påvirke det originale kort, kan vi oprette et nyt kort først ved hjælp af en kopikonstruktør af HashMap :

Map<Integer, String> newMap = new HashMap<>(map);
newMap.keySet().retainAll(keyList);

System.out.println(newMap);

Outputtet er det samme som ovenfor.

4. Konklusion

Sammenfattende har vi lært to metoder til at få et underkort fra en HashMap baseret på en liste over nøgler.


Java tag