เมื่อฉันเขียนกรองรูทในวันนี้ฉันก็ตกตะลึงเล็กน้อย ก่อนอื่นฉันคิดถึงการใช้แผนที่พื้นเมือง Java เพื่อวนซ้ำ แต่ฉันคิดว่ามันต่ำเกินไป ต่อมาฉันคิดถึงมันและสามารถใช้ Java 8 Lambda หลังจากเขียนแล้วฉันพบว่า Google Guava มีวิธีการสำเร็จรูป ฉันระบุไว้ทีละรายการเพื่ออ้างอิง
ก่อนอื่นถ้าคุณคัดลอกรหัสของฉันอย่าลืมอ้างถึงการอ้างอิงเหล่านี้
<การพึ่งพา> <predency> <roupId> junit </groupId> <ratifactid> junit </artifactid> <sersion> 4.12 </เวอร์ชัน> <pope> ทดสอบ </cope> <eplusions> <RoupID> org.hamcrest </roupId> <ratifactid> Hamcrest-Library </artifactid> <sersion> 1.3 </Scope> <Scope> ทดสอบ </scope> </predency> <predency> <roupId> com.google.guava </groupid> <ratifactid> guava < </predency> </dependencies>
ตัวกรองตามคีย์
ชั้นเรียนสาธารณะ FilterMapByKeyTest {แผนที่ส่วนตัว <จำนวนเต็ม, สตริง> สัปดาห์ = ใหม่ hashmap <> (); @Before การตั้งค่าโมฆะสาธารณะ () {Week.put (1, "วันจันทร์"); Week.put (2, "Tuesday"); Week.put (3, "วันพุธ"); Week.put (4, "วันพฤหัสบดี"); Week.put (5, "Friday"); Week.put (6, "Saturday"); Week.put (7, "Sunday"); } / *** เวอร์ชันก่อน java 8* / @test โมฆะสาธารณะ filtermapbykey () {แผนที่ <จำนวนเต็ม, สตริง> แผนที่ = ใหม่ hashmap <> (); สำหรับ (map.entry <จำนวนเต็ม, สตริง> รายการ: Week.entrySet ()) {ถ้า (entry.getKey () <= 3) {map.put (entry.getKey (), entry.getValue ()); }} assertThat (map.keyset (), มี (1, 2, 3)); } / ** * Java 8 Lambda * / @Test Public Void FilterMapByKeyJava8lambda () {แผนที่ <จำนวนเต็ม, สตริง> แผนที่ = สัปดาห์. entryset (). สตรีม (). ตัวกรอง (r -> r.getKey () <= 3). assertThat (map.keyset (), มี (1, 2, 3)); } / ** * Google Guava * / @Test โมฆะสาธารณะ FilterMapByKeyGuava () {แผนที่ <จำนวนเต็ม, สตริง> map = maps.filterKeys (สัปดาห์, r -> r <= 3); assertThat (map.keyset (), มี (1, 2, 3)); -ตัวกรองตามค่า
คลาสสาธารณะ FilterMapByValUetest {แผนที่ส่วนตัว <จำนวนเต็ม, สตริง> สัปดาห์ = ใหม่ hashmap <> (); @Before การตั้งค่าโมฆะสาธารณะ () {Week.put (1, "วันจันทร์"); Week.put (2, "Tuesday"); Week.put (3, "วันพุธ"); Week.put (4, "วันพฤหัสบดี"); Week.put (5, "Friday"); Week.put (6, "Saturday"); Week.put (7, "Sunday"); } / *** เวอร์ชันก่อน java 8* / @Test โมฆะสาธารณะ filterMapByValue () {แผนที่ <จำนวนเต็ม, สตริง> map = new hashmap <> (); สำหรับ (map.entry <จำนวนเต็ม, สตริง> รายการ: Week.entrySet ()) {ถ้า (entry.getValue (). startswith ("s")) {map.put (entry.getKey (), entry.getValue ()); }} assertThat (map.values (), มี ("วันเสาร์", "วันอาทิตย์")); } / ** * Java 8 Lambda * / @Test Public Void FilterMapByValueJava8lambda () {แผนที่ <จำนวนเต็ม, สตริง> แผนที่ = Week.entrySet (). สตรีม (). ตัวกรอง (r -> r.getValue () map.entry :: getValue)); assertThat (map.values (), มี ("วันเสาร์", "วันอาทิตย์")); } / ** * Google Guava * / @Test โมฆะสาธารณะ FilterMapByValueGuava () {แผนที่ <จำนวนเต็ม, สตริง> แผนที่ = maps.filterValues (สัปดาห์, r -> r.startswith ("s")); assertThat (map.values (), มี ("วันเสาร์", "วันอาทิตย์")); -สรุป
ด้านบนเป็นรหัสตัวอย่างของแผนที่ Java ที่กรองผ่านคีย์หรือค่าที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!