最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年06月29日 10:07:44   作者:志哥  
這篇文章主要介紹了Java Map 通過 key 或者 value 過濾的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

今天寫根過濾的時候一下子有點愣眼,先是想到用 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ù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java線程安全狀態(tài)專題解析

    Java線程安全狀態(tài)專題解析

    線程安全是多線程編程時的計算機程序代碼中的一個概念。在擁有共享數(shù)據(jù)的多條線程并行執(zhí)行的程序中,線程安全的代碼會通過同步機制保證各個線程都可以正常且正確的執(zhí)行,不會出現(xiàn)數(shù)據(jù)污染等意外情況
    2022-03-03
  • springboot如何實現(xiàn)自動裝配源碼解讀

    springboot如何實現(xiàn)自動裝配源碼解讀

    這篇文章主要介紹了springboot如何實現(xiàn)自動裝配源碼賞析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java 圖片復(fù)制功能實現(xiàn)過程解析

    Java 圖片復(fù)制功能實現(xiàn)過程解析

    這篇文章主要介紹了Java 圖片復(fù)制功能實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 基于java枚舉類綜合應(yīng)用的說明

    基于java枚舉類綜合應(yīng)用的說明

    一個枚舉類,可以看成包括它的一些子類(枚舉)的一個類,而且枚舉類的構(gòu)造方法只能是私有的
    2013-05-05
  • Spring?Bean是如何初始化的詳解

    Spring?Bean是如何初始化的詳解

    Spring只Bean加載機制默認(rèn)情況下是初始化容器的時候就會直接初始化,但是也取決于是否使用了懶加載,下面這篇文章主要給大家介紹了關(guān)于Spring?Bean是如何初始化的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Spring MVC 請求處理流程步驟詳解

    Spring MVC 請求處理流程步驟詳解

    這篇文章主要介紹了Spring MVC 請求處理流程詳解,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • Spring MVC利用Swagger2如何構(gòu)建動態(tài)RESTful API詳解

    Spring MVC利用Swagger2如何構(gòu)建動態(tài)RESTful API詳解

    這篇文章主要給大家介紹了關(guān)于在Spring MVC中利用Swagger2如何構(gòu)建動態(tài)RESTful API的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Java如何識別圖片或掃描PDF中的文字詳解

    Java如何識別圖片或掃描PDF中的文字詳解

    這篇文章主要介紹了Java如何識別圖片或掃描PDF中文字的相關(guān)資料,介紹了Java中使用Spire.OCRforJava庫來識別圖片和掃描PDF文件中的文字,需要的朋友可以參考下
    2025-01-01
  • Java解碼H264格式視頻流中的圖片

    Java解碼H264格式視頻流中的圖片

    這篇文章主要為大家詳細(xì)介紹了Java解碼H264格式視頻流中的圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Java如何重寫object類的equals方法詳解

    Java如何重寫object類的equals方法詳解

    這篇文章主要給大家介紹了關(guān)于Java如何重寫object類的equals方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

鄂尔多斯市| 电白县| 永泰县| 比如县| 黄山市| 大田县| 公主岭市| 玉环县| 垣曲县| 含山县| 凤山县| 夏津县| 密云县| 五指山市| 阜新市| 花垣县| 聂荣县| 恭城| 邵东县| 太湖县| 天长市| 博兴县| 如皋市| 鸡西市| 诏安县| 当涂县| 普格县| 成安县| 沧源| 都昌县| 丰宁| 博乐市| 自贡市| 宁晋县| 高尔夫| 太保市| 阿鲁科尔沁旗| 东方市| 久治县| 新化县| 保定市|