如何在java 8 map中使用stream
简介
map是java中非常常用的一个集合类型,我们通常也需要去遍历map去获取某些值,java 8引入了stream的概念,那么我们怎么在map中使用stream呢?
基本概念
map有key,value还有表示key,value整体的entry。
创建一个map:
map<string, string> somemap = new hashmap<>();
获取map的entryset:
set<map.entry<string, string>> entries = somemap.entryset();
获取map的key:
set<string> keyset = somemap.keyset();
获取map的value:
collection<string> values = somemap.values();
上面我们可以看到有这样几个集合:map,set,collection。
除了map没有stream,其他两个都有stream方法:
stream<map.entry<string, string>> entriesstream = entries.stream();
stream<string> valuesstream = values.stream();
stream<string> keysstream = keyset.stream();
我们可以通过其他几个stream来遍历map。
使用stream获取map的key
我们先给map添加几个值:
somemap.put("jack","20");
somemap.put("bill","35");
上面我们添加了name和age字段。
如果我们想查找age=20的key,则可以这样做:
optional<string> optionalname = somemap.entryset().stream() .filter(e -> "20".equals(e.getvalue())) .map(map.entry::getkey) .findfirst(); log.info(optionalname.get());
因为返回的是optional,如果值不存在的情况下,我们也可以处理:
optionalname = somemap.entryset().stream() .filter(e -> "non ages".equals(e.getvalue())) .map(map.entry::getkey).findfirst(); log.info("{}",optionalname.ispresent());
上面的例子我们通过调用ispresent来判断age是否存在。
如果有多个值,我们可以这样写:
somemap.put("alice","20"); list<string> listnames = somemap.entryset().stream() .filter(e -> e.getvalue().equals("20")) .map(map.entry::getkey) .collect(collectors.tolist()); log.info("{}",listnames);
上面我们调用了collect(collectors.tolist())将值转成了list。
使用stream获取map的value
上面我们获取的map的key,同样的我们也可以获取map的value:
list<string> listages = somemap.entryset().stream() .filter(e -> e.getkey().equals("alice")) .map(map.entry::getvalue) .collect(collectors.tolist()); log.info("{}",listages);
上面我们匹配了key值是alice的value。
总结
stream是一个非常强大的功能,通过和map相结合,我们可以更加简单的操作map对象。
本文的例子
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 一个jsp+AJAX评论系统第1/2页
下一篇: 地瓜的热量是多少?吃地瓜对身体有何好处?
推荐阅读
-
Java8中Stream使用的一个注意事项
-
Java8中Lambda表达式使用和Stream API详解
-
Java中stream处理中map与flatMap的比较和使用案例
-
使用Java8 Stream API对Map按键或值进行排序
-
如何在java 8 map中使用stream
-
Java8使用stream实现list中对象属性的合并(去重并求和)
-
实例理解Java8新特性中Stream API和Optional类的使用
-
java8中利用stream api将list转成map
-
Java中stream处理中map与flatMap的比较和使用案例
-
Java8 实现stream将对象集合list中抽取属性集合转化为map或list