Quand j'écrivais le filtrage des racines aujourd'hui, j'étais un peu stupéfait. J'ai d'abord pensé à utiliser la carte native de Java pour le boucler, mais je pensais que c'était trop bas. Plus tard, j'y ai pensé et je pourrais utiliser Java 8 Lambda. Après l'avoir écrit, j'ai constaté que Google Guava avait une méthode prête à l'emploi. Je l'ai répertorié un par un pour référence.
Tout d'abord, si vous copiez mon code, n'oubliez pas de citer ces dépendances
<Dependances> <Dependance> <GroupId> JUnit </rom grouped> <Artifactid> JUnit </ Artifactid> <Dersion> 4.12 </ Version> <Cope> Test </cope> <cussions> <cuslusion> <proupId> Org.hamcrest </rom grouped> <artifactid> hamcrest-core </retifactid> </cusclusion> <dependency> <proupId> org.hamcrest </rom grouped> <Artifactid> Hamcrest-Library </Retifactid> <DERSE> 1.3 </DERNIERD> <COPE> TEST </ccope> </Dependency> <Dendency> <proupId> com.google.guava </proupId> <prifactid> Guava </Artifactid> </dpendance> </dpendances>
filtre par clé
classe publique filTerMapbyKeyTest {Private Map <Integer, String> Week = new HashMap <> (); @Before public void setup () {semaine.put (1, "lundi"); Semaine.put (2, "mardi"); Semaine.put (3, "mercredi"); Semaine.put (4, "jeudi"); Week.put (5, "Friday"); Week.put (6, "Saturday"); Week.put (7, "Sunday"); } / ** * Versions avant Java 8 * / @Test public void filTerMapbykey () {map <Integer, String> map = new Hashmap <> (); pour (map.entry <nteger, string> entrée: semaine.EntrySet ()) {if (entry.getKey () <= 3) {map.put (entry.getKey (), entry.getValue ()); }} assertThat (map.KeySet (), contient (1, 2, 3)); } / ** * java 8 lambda * / @test public void filtermapbykeyjava8lambda () {map <Integer, string> map = week.entryset (). Stream (). Filter (r -> r.getkey () <= 3) .Collect (collecteurs.tomap (map.entry :: Getkey, Map.Entry :: getValue))); assertThat (map.KeySet (), contient (1, 2, 3)); } / ** * Google Guava * / @Test public void filtermapbykeyguava () {map <Integer, string> map = maps.filterKeys (semaine, r -> r <= 3); assertThat (map.KeySet (), contient (1, 2, 3)); }}filtre par valeur
classe publique filTerMapbyValueTest {Private Map <Integer, String> Week = new HashMap <> (); @Before public void setup () {semaine.put (1, "lundi"); Semaine.put (2, "mardi"); Semaine.put (3, "mercredi"); Semaine.put (4, "jeudi"); Week.put (5, "Friday"); Week.put (6, "Saturday"); Week.put (7, "Sunday"); } / ** * Versions avant Java 8 * / @Test public void filTerMapbyValue () {map <Integer, String> map = new Hashmap <> (); for (map.entry <nteger, string> entrée: semaine.entryset ()) {if (entry.getValue (). startSwith ("s")) {map.put (entrée.getKey (), entry.getValue ()); }} assertThat (map.values (), contient ("samedi", "dimanche")); } / ** * java 8 lambda * / @test public void filtermapbyvaluejava8lambda () {map <integer, string> map = week.entryset (). Stream (). Filter (r -> r.getValue (). StartSwith ("s")) .Collect (collection.ToMap (Map.EntRy :: Getkey, Getkey,. Map.entry :: getValue)); AssertThat (map.Values (), contient ("Saturday", "Sunday")); } / ** * Google Guava * / @Test public void filTerMapbyValueguava () {map <Integer, String> map = maps.filterValues (semaine, r -> r.startswith ("s")); AssertThat (map.Values (), contient ("Saturday", "Sunday")); }}Résumer
Ce qui précède est l'exemple de code de la carte Java filtrée via la clé ou la valeur introduite par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!