java8mapstream_怎么在java8的map中使⽤stream
怎么在java 8的map中使⽤stream
简介
Map是java中⾮常常⽤的⼀个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引⼊了Stream的概念,那么我们怎么在Map中使⽤Stream呢?
基本概念
Map有key,value还有表⽰key,value整体的Entry。
创建⼀个Map:
Map someMap = new HashMap<>();
获取Map的entrySet:
Set> entries = Set();
获取map的key:
Set keySet = someMap.keySet();
获取map的value:
Collection values = someMap.values();
上⾯我们可以看到有这样⼏个集合:Map,Set,Collection。
除了Map没有stream,其他两个都有stream⽅法:
Stream> entriesStream = entries.stream();
Stream valuesStream = values.stream();
Stream keysStream = keySet.stream();
我们可以通过其他⼏个stream来遍历map。
使⽤Stream获取map的key
我们先给map添加⼏个值:
someMap.put("jack","20");
someMap.put("bill","35");
上⾯我们添加了name和age字段。
如果我们想查age=20的key,则可以这样做:
Optional optionalName = Set().stream()
.filter(e -> "20".Value()))
.map(Map.Entry::getKey)
.findFirst();
log.());
因为返回的是Optional,如果值不存在的情况下,我们也可以处理:
optionalName = Set().stream()
.
filter(e -> "Non ages".Value()))
.map(Map.Entry::getKey).findFirst();
log.info("{}",optionalName.isPresent());
上⾯的例⼦我们通过调⽤isPresent来判断age是否存在。
如果有多个值,我们可以这样写:
someMap.put("alice","20");
List listnames = Set().stream()
.filter(e -> e.getValue().equals("20"))
.map(Map.Entry::getKey)
.List());
java streamlog.info("{}",listnames);
上⾯我们调⽤了List())将值转成了List。
使⽤stream获取map的value
上⾯我们获取的map的key,同样的我们也可以获取map的value:
List listAges = Set().stream()
.filter(e -> e.getKey().equals("alice"))
.map(Map.Entry::getValue)
.List());
log.info("{}",listAges);
上⾯我们匹配了key值是alice的value。
总结
Stream是⼀个⾮常强⼤的功能,通过和map相结合,我们可以更加简单的操作map对象。欢迎关注我的:程序那些事,更多精彩等着您!
更多内容请访问 www.flydean

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。