Java Map 通过 key 或者 value 过滤的实例代码

网友投稿 307 2023-01-27


Java Map 通过 key 或者 value 过滤的实例代码

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

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

junit

junit

4.12

test

org.hamcrest

hamcrest-core

org.hamcrest

hamcrest-library

1.3

test

com.google.guava

guava

25.1-jre

filter by key

public class FilterMapByKeyTest {

private Map 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 map = new HashMap<>();

for (Map.Entry entry : WEEK.entrySet()) {

if (entry.getKey() <= 3) {

map.put(entry.getKey(), entry.getValue());

}

}

assertThat(map.keySet(), contains(1, 2, 3));

}

/**

* JavQRMjba 8 Lambda

*/

@Test

public void filterMapByKeyJava8Lambda () {

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

*/

@Test

public void filterMapByKeyGuava () {

Map map = Maps.filterKeys(WEEK, r -> r <= 3);

assertThat(map.keySet(), contains(1, 2, 3));

}

}

filter by value

public class FilterMapByValueTest {

private Map 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 map = new HashMap<>();

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

*/

@Test

public void filterMapByValueJava8Lambda () {

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

*/

@Test

public void filterMapByValueGuava () {

Map map = Maps.filterValues(WEEK, r -> r.startsWith("S"));

assertThat(map.values(), contains("Saturday","Sunday"));

}

}

总结

以上所述是给大家介绍的Java Map 通过 key 或者 value 过滤的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现简单的表达式计算器功能示例
下一篇:共享文件系统怎么样(共享文件如何共享)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~