Ketika saya sedang menulis root penyaringan hari ini, saya sedikit terpana. Saya pertama kali berpikir untuk menggunakan peta asli Java untuk mengulanginya, tetapi saya pikir itu terlalu rendah. Kemudian, saya memikirkannya dan bisa menggunakan Java 8 Lambda. Setelah menulisnya, saya menemukan bahwa Google Guava memiliki metode yang sudah jadi. Saya mendaftarkannya satu per satu untuk referensi.
Pertama -tama, jika Anda menyalin kode saya, jangan lupa mengutip dependensi ini
<Dependencies> <dependency> <GroupId> junit </groupid> <ArtifactId> junit </artifactid> <version> 4.12 </version> <scope> tes </scope> <celuctions> <scuprence> </Arterency> <concrevence> <TROPUCION> <ArTtifacTID> <concrendence> <conperence> <conclenency> <concurons> <croncusion> <concurons> <croncusion> <croncusion> <croncusion> <t Artifactid> hamcrest-core </Artactids </groupid> <ArTifacTID> Hamcrest-Core </Artactid <GroupId> org.hamcrest </groupid> <ArTifactId> hamcrest-library </stifactid> <version> 1.3 </version> <scope> test </seupope> </dependency> <sependency> <sroupid> com.google.guava </groupid> <Artifactid> <croGaD> </artacid.guava </groupid> <ArTifactId> Guava </Artacid </dependency> </dependensi>
filter dengan kunci
Public Class FilterMapByKeyTest {private Map <Integer, String> Week = new HashMap <> (); @Before public void setup () {week.put (1, "Monday"); Week.put (2, "Selasa"); Week.put (3, "Rabu"); Minggu.put (4, "Kamis"); Week.put (5, "Friday"); Minggu.put (6, "Sabtu"); Minggu.put (7, "Minggu"); } / *** versi sebelum java 8* / @test public void filtermapbykey () {peta <integer, string> peta = new HashMap <> (); untuk (map.entry <integer, string> entri: week.entryset ()) {if (entry.getKey () <= 3) {map.put (entry.getKey (), entry.getValue ()); }} assertThat (peta.keyset (), berisi (1, 2, 3)); } / ** * java 8 lambda * / @test public void filtermapbykeyjava8lambda () {peta <integer, string> peta = week.entryset (). Stream (). Filter (r -> r.getkey () <= 3) .collect (collectors.tomap (Map.entry :: getkey () <= 3) .collect (collectors.tomap (Map.entry :: getkey () <= 3) .collect (collectors.tomap (map.entry :: getkey () <= 3) .collect (collectors.tomap (Map.entry: Getkey (gets). assertThat (map.keyset (), berisi (1, 2, 3)); } / ** * Google Guava * / @test public void filtermapbykeyguava () {peta <integer, string> peta = maps.filterkeys (minggu, r -> r <= 3); assertThat (map.keyset (), berisi (1, 2, 3)); }}filter berdasarkan nilai
Public Class FilterMapByValuetest {private Map <Integer, String> minggu = hashMap baru <> (); @Before public void setup () {week.put (1, "Monday"); Week.put (2, "Selasa"); Week.put (3, "Rabu"); Minggu.put (4, "Kamis"); Week.put (5, "Friday"); Minggu.put (6, "Sabtu"); Minggu.put (7, "Minggu"); } / *** versi sebelum java 8* / @test public void filterMapByValue () {peta <integer, string> peta = hashmap baru <> (); untuk (map.entry <integer, string> entri: week.entryset ()) {if (entry.getValue (). startswith ("s")) {map.put (entry.getKey (), entry.getValue ()); }} assertThat (map.values (), berisi ("Sabtu", "Minggu")); } / ** * java 8 lambda * / @test public void filtermapbyvalueJava8lambda () {peta <integer, string> map = week.entryset (). Stream (). Filter (r -> r.getValue (). Startswith ("st")) .collect (r -r.getValue (). Startswith ("st")) .collect (collectors.toMap (). Map: "s (" ste ("s")) .collectors.toMap. Peta.entry :: getValue)); AssertThat (Map.Values (), berisi ("Sabtu", "Minggu")); } / ** * Google Guava * / @test public void filterMapByValugeAva () {peta <integer, string> peta = maps.filtervalues (minggu, r -> r.startswith ("s")); AssertThat (Map.Values (), berisi ("Sabtu", "Minggu")); }}Meringkaskan
Di atas adalah contoh kode peta java yang difilter melalui kunci atau nilai yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!