Als ich heute Wurzelfiltering schrieb, war ich ein wenig fassungslos. Ich dachte zum ersten Mal daran, die native Java -Karte zu verwenden, um sie auszuschließen, aber ich dachte, es sei zu niedrig. Später dachte ich darüber nach und konnte Java 8 Lambda verwenden. Nachdem ich es geschrieben hatte, stellte ich fest, dass Google Guava eine vorgefertigte Methode hat. Ich habe es einzeln als Referenz aufgeführt.
Wenn Sie meinen Code kopieren, vergessen Sie zunächst nicht, diese Abhängigkeiten zu zitieren
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-library</artifactId> <version>1.3</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>25.1-jre</version> </abhängig> </Abhängigkeiten>
Filter nach Schlüssel
public class FilterMapByKeyTest {private map <Integer, String> Woche = new Hashmap <> (); @Before public void setup () {Woche.put (1, "montag"); Woche.put (2, "Dienstag"); Woche.put (3, "Mittwoch"); Woche.put (4, "Donnerstag"); Woche.put (5, "Freitag"); Woche.put (6, "Samstag"); Woche.put (7, "Sonntag"); } / *** Versionen vor Java 8* / @test public void filtermapByKey () {map <Integer, String> map = new HashMap <> (); for (map.entry <Integer, String> Eintrag: Woche.EntrySet ()) {if (Eintrag.Getkey () <= 3) {map.put (Entry.getKey (), Entry.getValue ()); }} assertThat (map.keyset (), enthält (1, 2, 3)); } / ** * java 8 lambda * / @test public void filtermapByKeyjava8lambda () {map <Integer, String> map = Woche.EntrySet (). AssertThat (map.Keyset (), enthält (1, 2, 3)); } / ** * Google Guava * / @test public void filtermapByKeyGuava () {map <Integer, String> map = maps.filterkeys (Woche, r -> r <= 3); AssertThat (map.Keyset (), enthält (1, 2, 3)); }}filtern nach Wert
öffentliche Klasse FilterMapByValUeTest {private map <Integer, String> Woche = new Hashmap <> (); @Before public void setup () {Woche.put (1, "montag"); Woche.put (2, "Dienstag"); Woche.put (3, "Mittwoch"); Woche.put (4, "Donnerstag"); Woche.put (5, "Freitag"); Woche.put (6, "Samstag"); Woche.put (7, "Sonntag"); } / *** Versionen vor java 8* / @test public void filterMapByValue () {map <Integer, String> map = new HashMap <> (); for (map.entry <Integer, String> Eintrag: Woche.EntrySet ()) {if (Eintrag.getValue (). startsWith ("s")) {map.put (Entry.Getkey (), Eintrag.getValue ()); }} assertThat (map.Values (), enthält ("samstags", "sunday")); } / ** * java 8 lambda * / @test public void filtermapByValueJava8lambda () {map <Integer, String> map = Woche.EntrySet (). Stream (). Filter (r -> R.GetValue (). Map.Entry :: GetValue)); AssertThat (map.Values (), enthält ("Samstag", "Sonntag"); } / ** * Google Guava * / @test public void filtermapByValueguava () {map <Integer, String> map = Maps.FilterValues (Woche, r -> R.Startswith ("S"); AssertThat (map.Values (), enthält ("Samstag", "Sonntag"); }}Zusammenfassen
Das obige ist der Beispielcode von Java Map, der durch den Editor eingeführten Schlüssel oder Wert gefiltert wird. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!