国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

Java Map 通過 key 或者 value 過濾的實例代碼

2024-07-14 08:41:23
字體:
供稿:網(wǎng)友

今天寫根過濾的時候一下子有點愣眼,先是想到用 Java 原生的 map 循環(huán)查出來,但是覺得太 low, 后面思考了一下可以用 Java8 的 Lambda,寫完了,又發(fā)現(xiàn) Google Guava 有現(xiàn)成的方法,這里一一列出來,供參考使用。

首先提示,如果照搬我的代碼的話別忘了引這些依賴

<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>      </exclusions>    </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>    </dependency></dependencies>

filter by key

public class FilterMapByKeyTest {  private Map<Integer, String> WEEK = new HashMap<>();  @Before  public void setUp () {    WEEK.put(1, "Monday");    WEEK.put(2, "Tuesday");    WEEK.put(3, "Wednesday");    WEEK.put(4, "Thursday");    WEEK.put(5, "Friday");    WEEK.put(6, "Saturday");    WEEK.put(7, "Sunday");  }  /**   * Java 8之前的版本   */  @Test  public void filterMapByKey () {    Map<Integer, String> map = new HashMap<>();    for (Map.Entry<Integer, String> entry : WEEK.entrySet()) {      if (entry.getKey() <= 3) {        map.put(entry.getKey(), entry.getValue());      }    }    assertThat(map.keySet(), contains(1, 2, 3));  }  /**   * Java 8 Lambda   */  @Test  public void filterMapByKeyJava8Lambda () {    Map<Integer, String> map = WEEK.entrySet().stream().filter(r -> r.getKey() <= 3)            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));    assertThat(map.keySet(), contains(1, 2, 3));  }  /**   * Google Guava   */  @Test  public void filterMapByKeyGuava () {    Map<Integer, String> map = Maps.filterKeys(WEEK, r -> r <= 3);    assertThat(map.keySet(), contains(1, 2, 3));  }}

filter by value

public class FilterMapByValueTest {  private Map<Integer, String> WEEK = new HashMap<>();  @Before  public void setUp () {    WEEK.put(1, "Monday");    WEEK.put(2, "Tuesday");    WEEK.put(3, "Wednesday");    WEEK.put(4, "Thursday");    WEEK.put(5, "Friday");    WEEK.put(6, "Saturday");    WEEK.put(7, "Sunday");  }  /**   * Java 8之前的版本   */  @Test  public void filterMapByValue () {    Map<Integer, String> map = new HashMap<>();    for (Map.Entry<Integer, String> entry : WEEK.entrySet()) {      if (entry.getValue().startsWith("S")) {        map.put(entry.getKey(), entry.getValue());      }    }    assertThat(map.values(), contains("Saturday","Sunday"));  }  /**   * Java 8 Lambda   */  @Test  public void filterMapByValueJava8Lambda () {    Map<Integer, String> map = WEEK.entrySet().stream().filter(r -> r.getValue().startsWith("S"))        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));    assertThat(map.values(), contains("Saturday","Sunday"));  }  /**   * Google Guava   */  @Test  public void filterMapByValueGuava () {    Map<Integer, String> map = Maps.filterValues(WEEK, r -> r.startsWith("S"));    assertThat(map.values(), contains("Saturday","Sunday"));  }}

總結(jié)

以上所述是小編給大家介紹的Java Map 通過 key 或者 value 過濾的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤凰县| 陈巴尔虎旗| 罗山县| 岳普湖县| 灵山县| 岑溪市| 武陟县| 宜宾县| 凯里市| 禹州市| 崇仁县| 博爱县| 油尖旺区| 山阳县| 怀安县| 乐陵市| 阿鲁科尔沁旗| 镇宁| 通渭县| 双辽市| 元氏县| 陇川县| 怀化市| 黔南| 延津县| 河南省| 永州市| 如皋市| 靖远县| 宁波市| 曲麻莱县| 宝坻区| 彰武县| 白山市| 清水县| 章丘市| 喀什市| 永修县| 潜山县| 托克逊县| 桃源县|