美文网首页Java
Java Map 通过 key 或者 value 过滤

Java Map 通过 key 或者 value 过滤

作者: Java架构技术分享 | 来源:发表于2018-06-29 15:56 被阅读5次

今天写根过滤的时候一下子有点愣眼,先是想到用 Java 原生的 map 循环查出来,但是觉得太 low, 后面思考了一下可以用 Java8 的 Lambda,写完了,又发现 Google Guava 有现成的方法,这里一一列出来,供参考使用。

首先提示,如果照搬我的代码的话别忘了引这些依赖

junitjunit4.12testorg.hamcresthamcrest-coreorg.hamcresthamcrest-library1.3testcom.google.guavaguava25.1-jre

filter by key

publicclassFilterMapByKeyTest{privateMap WEEK =newHashMap<>();@BeforepublicvoidsetUp(){        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之前的版本

    */@TestpublicvoidfilterMapByKey(){        Map map =newHashMap<>();for(Map.Entry entry : WEEK.entrySet()) {if(entry.getKey() <=3) {                map.put(entry.getKey(), entry.getValue());            }        }        assertThat(map.keySet(), contains(1,2,3));    }/**

    * Java 8 Lambda

    */@TestpublicvoidfilterMapByKeyJava8Lambda(){        Map 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

    */@TestpublicvoidfilterMapByKeyGuava(){        Map map = Maps.filterKeys(WEEK, r -> r <=3);        assertThat(map.keySet(), contains(1,2,3));    }}

filter by value

publicclassFilterMapByValueTest{privateMap WEEK =newHashMap<>();@BeforepublicvoidsetUp(){        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之前的版本

    */@TestpublicvoidfilterMapByValue(){        Map map =newHashMap<>();for(Map.Entry entry : WEEK.entrySet()) {if(entry.getValue().startsWith("S")) {                map.put(entry.getKey(), entry.getValue());            }        }        assertThat(map.values(), contains("Saturday","Sunday"));    }/**

    * Java 8 Lambda

    */@TestpublicvoidfilterMapByValueJava8Lambda(){        Map 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

    */@TestpublicvoidfilterMapByValueGuava(){        Map map = Maps.filterValues(WEEK, r -> r.startsWith("S"));        assertThat(map.values(), contains("Saturday","Sunday"));    }}

如果觉得内容还不错,可以关注一下我哦 

相关文章

  • Java Map 通过 key 或者 value 过滤

    今天写根过滤的时候一下子有点愣眼,先是想到用 Java 原生的 map 循环查出来,但是觉得太 low, 后面思考...

  • Java Map 通过 key 或者 value 过滤

    今天写根过滤的时候一下子有点愣眼,先是想到用 Java 原生的 map 循环查出来,但是觉得太 low, 后面思考...

  • C++之map

    c++的map中通过key获取value的方法 一般是value =map[key],或者另一种迭代器的方式 1、...

  • Map

    let map=new Map()let map=new Map([key,value],[key,value])...

  • unordered_map 与 map 的对比(存疑)

    unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同...

  • map

    map,取key用map.keySet().取value用map.get(key).

  • JS处理后端传来的Map

    后端(Java)给前端map参数的时候,可以通过下面的方式获取到KEY以及KEY对应的value 此外,还有更简单...

  • Map

    Map键值(key-value)映射表的数据结构,作用就是能高效通过key快速查找value(元素)。 Map也是...

  • 5.java 集合醉醉念

    通过Map.entrySet遍历key和value for (Map.Entry entry : map.ent...

  • Java 8 中的 java.util.Map#computeI

    Java8之前,从map中根据key获取value操作可能会有下面的操作 Object key = map.get...

网友评论

    本文标题:Java Map 通过 key 或者 value 过滤

    本文链接:https://www.haomeiwen.com/subject/hkpayftx.html