工作记录------常用Stream流处理
本文用于记录工作中常用的Java8 Stream流处理用法,以及遇到的一些实际问题。
至于Stram流的概念学习等,请看之前发布的文章。
会持续更新。
当前包括
map 获取某个属性的集合
distinct 去重
groupingBy 分组
map 获取某个属性的集合
map可以用来获取对象的某个属性。
List<String> collect = list.stream().map(PmAreasT::getItmId).collect(Collectors.toList());
完整测试代码
@Test
public void testList7(){
List<PmAreasT> list = new ArrayList<>();
PmAreasT pmAreasT = new PmAreasT();
pmAreasT.setItmId("1");
PmAreasT pmAreasT1 = new PmAreasT();
pmAreasT1.setItmId("2");
PmAreasT pmAreasT2 = new PmAreasT();
pmAreasT2.setItmId("3");
PmAreasT pmAreasT3 = new PmAreasT();
pmAreasT3.setItmId("3");
list.add(pmAreasT);
list.add(pmAreasT1);
list.add(pmAreasT2);
list.add(pmAreasT3);
List<String> collect = list.stream().map(PmAreasT::getItmId).collect(Collectors.toList());
collect.stream().forEach(System.out::println);
}
打印输出结果:
1
2
3
3
更进一步用于去重,
distinct 去重
对象通过使用map之后,获得想要的属性集合,再使用distinct进行去重,这种写法更加方便。
List<String> collect = list.stream().map(PmAreasT::getItmId).distinct().collect(Collectors.toList());
完整测试代码
@Test
public void testList7(){
List<PmAreasT> list = new ArrayList<>();
PmAreasT pmAreasT = new PmAreasT();
pmAreasT.setItmId("1");
PmAreasT pmAreasT1 = new PmAreasT();
pmAreasT1.setItmId("2");
PmAreasT pmAreasT2 = new PmAreasT();
pmAreasT2.setItmId("3");
PmAreasT pmAreasT3 = new PmAreasT();
pmAreasT3.setItmId("3");
list.add(pmAreasT);
list.add(pmAreasT1);
list.add(pmAreasT2);
list.add(pmAreasT3);
List<String> collect = list.stream().map(PmAreasT::getItmId).distinct().collect(Collectors.toList());
collect.stream().forEach(System.out::println);
}
打印结果:
1
2
3
groupingBy 分组
根据ItmId进行分组,ItmId作为key,对象作为value。
Map<String, List<PmAreasT>> collect = list.stream().collect(Collectors.groupingBy(x -> x.getItmId()));
如果想根据多个属性值分组,可以采用
x -> x.getItmId()+x.getB() 作为key的方式
完整测试代码
@Test
public void testList7(){
List<PmAreasT> list = new ArrayList<>();
PmAreasT pmAreasT = new PmAreasT();
pmAreasT.setItmId("1");
PmAreasT pmAreasT1 = new PmAreasT();
pmAreasT1.setItmId("2");
PmAreasT pmAreasT2 = new PmAreasT();
pmAreasT2.setItmId("3");
pmAreasT2.setSiteId("sadasdasd3333");
PmAreasT pmAreasT3 = new PmAreasT();
pmAreasT3.setItmId("3");
pmAreasT3.setSiteId("sadasdasd44444444");
list.add(pmAreasT);
list.add(pmAreasT1);
list.add(pmAreasT2);
list.add(pmAreasT3);
Map<String, List<PmAreasT>> collect = list.stream().collect(Collectors.groupingBy(x -> x.getItmId()));
for(Map.Entry<String, List<PmAreasT>> entry:collect.entrySet()){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
}
输出结果:
1—>[PmAreasT(areaId=null, siteId=null, securityGroupId=null, areaCode=null, areaDesc=null, areaDescGlobal=null, areaDescExtended=null, active=null, itmId=1, siteCode=null)]
2—>[PmAreasT(areaId=null, siteId=null, securityGroupId=null, areaCode=null, areaDesc=null, areaDescGlobal=null, areaDescExtended=null, active=null, itmId=2, siteCode=null)]
3—>[PmAreasT(areaId=null, siteId=sadasdasd3333, securityGroupId=null, areaCode=null, areaDesc=null, areaDescGlobal=null, areaDescExtended=null, active=null, itmId=3, siteCode=null), PmAreasT(areaId=null, siteId=sadasdasd44444444, securityGroupId=null, areaCode=null, areaDesc=null, areaDescGlobal=null, areaDescExtended=null, active=null, itmId=3, siteCode=null)]