场景
- 如何将
List<Entity>
list 中实体类的name属性值取出来封装为List<String>
对象 - 如何将
List<Entity>
list 中实体类的id和name属性值取出来封装为Map<Long,String>
对象
解决方法
可以使用Java8提供的流处理API来快速简洁的获取所需集合
代码
// 使用流处理
List<String> nameList = list.stream()
.map(Entity::getName())
.collect(Collectors.toList())
Map<Long, String> map = list.stream()
.map(c -> new AbstractMap.SimpleEntry<>(c.getId(), c.getName()))
.collect(Collectors.toMap(Map.Entry::getKey(), Map.Entry::getValue()))
上述第一段代码中,list为需要处理的数据源,通过list.stream()
将其转换为Stream
流,然后使用map
方法将每个元素的name属性映射出来,最后使用collect
方法将所有name属性封装成List
集合。
上述第二段代码中 ,通过list.stream()
将其转换为Stream
流。然后使用map()方法将每个Entity
对象映射为一个Map.Entry
对象,其中key
为name属性,value
为level属性。最后,使用collect()
方法将所有Map.Entry
对象收集为一个Map
对象。