一. 需求:遍历List集合,集合中的对象的某个字段是以 逗号分割的,把分割后的值保存在Set集合中
普通的写法:
Set<String> cfgPortfolioSet = new HashSet<>(20);
for (CfgPortfolio cfgPortfolio : cfgPortfolioList) {
String compreftmp = cfgPortfolio.getComprefs();
if(!StringTools.isTrimEmpty(compreftmp)){
String[] split = compreftmp.split(",");
for (String s : split) {
cfgPortfolioSet.add(s);
}
}
}
java 8 stream流的写法:
一行代码搞定
Set<String> cfgPortfolioSet = cfgPortfolioList.stream().flatMap(cfgPortfolio -> {
if (StringTools.isTrimEmpty(cfgPortfolio.getComprefs())) {
return null;
}
return Arrays.stream(cfgPortfolio.getComprefs().split(","));
}).collect(Collectors.toSet());
二. 将list集合转Set
普通list的转集合 是for语句遍历list,stream流直接一句代码
// list 转 Set
List<Man> manList = new ArrayList<>();
Man man = new Man();
man.setId("1");
man.setName("人");
manList.add(man);
Set<Man> manSet = manList.stream().collect(Collectors.toSet());
manSet.contains("1");
Iterator<Man> iterable = manSet.iterator();
while (iterable.hasNext()){
System.out.println(iterable.next().getId());
}
三. 将list集合转Map
List<Man> manList = new ArrayList<>();
manList.add(new Man("1", "人"));
manList.add(new Man("1", "我"));
//list to map 无重复key的时候
// Map<String, Man> map1 = manList.stream().collect(Collectors.toMap(Man::getId, test->test));
//System.out.println(map1.get("1").getName());
//list to map 有重复key的时候
Map<String, Man> map = manList.stream().collect(Collectors.toMap(Man::getId, Function.identity(),(test1, test2) -> test1 ));
System.out.println(map.get("1").getName());
//list to map value值取单个字段时
Map<String, String> mapname1 = manList.stream().collect(Collectors.toMap(Man::getId, Man::getName, (man1,man2)-> man1 ));
System.out.println(mapname1.get("1"));
//list to map value值拼接
Map<String, String> mapcomb = manList.stream().collect(Collectors.toMap(Man::getId, Man::getName, (key1, key2)-> key1+","+key2));
System.out.println(mapcomb.get("1"));
// list转map, 重复时将重复key的数据组成集合
Map<String, List<String>> maplist = manList.stream().collect(Collectors.toMap(Man::getId, p ->{
List<String> list = new ArrayList<>();
list.add(p.getName());
return list;
}, (List<String> value1, List<String> value2 )-> {value1.addAll(value2); return value1;}));
System.out.println(maplist.get("1").toString());
今天的文章java8 用strem流处理集合的例子 list转Set、Map分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11201.html