public class ExcelTool {
public static void main(String[] args) throws ParseException {
List<VO> list = new ArrayList<VO>();
VO vo1= new VO();
vo1.setName("xxxx");
vo1.setData("2020-12-12");
vo1.setTime("08:45:00");
list.add(vo1);
VO vo2= new VO();
vo2.setName("xxxx");
vo2.setData("2020-12-12");
vo2.setTime("08:46:00");
list.add(vo2);
VO vo3= new VO();
vo3.setName("xxxx");
vo3.setData("2020-12-12");
vo3.setTime("08:47:00");
list.add(vo3);
VO vo4= new VO();
vo4.setName("xxxx");
vo4.setData("2020-12-12");
vo4.setTime("18:47:00");
list.add(vo4);
VO vo5= new VO();
vo5.setName("yyyy");
vo5.setData("2020-12-12");
vo5.setTime("08:45:00");
list.add(vo5);
VO vo6= new VO();
vo6.setName("yyyy");
vo6.setData("2020-12-12");
vo6.setTime("08:46:00");
list.add(vo6);
VO vo7= new VO();
vo7.setName("yyyy");
vo7.setData("2020-12-12");
vo7.setTime("08:47:00");
list.add(vo7);
VO vo8= new VO();
vo8.setName("yyyy");
vo8.setData("2020-12-12");
vo8.setTime("18:47:00");
list.add(vo8);
//多字段分组
Map<String, List<VO>> menuGroupMap = list.stream().collect(Collectors.groupingBy(v -> v.getName() + "_" + v.getData()));
List<VO> groupbyVos = menuGroupMap.keySet().stream().map(key -> {
String[] keyArr = key.split("_");
String code = keyArr[0];
String codeName = keyArr[1];
VO temp = new VO();
temp.setName(code);
temp.setData(codeName);
temp.setVo(menuGroupMap.get(key));
return temp;
}).collect(Collectors.toList());
for (int i = 0; i <groupbyVos.size() ;i++ ){
AtomicReference<String> minVo = new AtomicReference<>("");
AtomicReference<String> maxVo = new AtomicReference<>("");
VO mu = groupbyVos.get(i);
List<VO> voList = mu.getVo();
System.out.println("---Min and Max for String---");
voList.stream().min(Comparator.comparing(String::valueOf))
.ifPresent(e -> minVo.set(e.getTime()));
voList.stream().max(Comparator.comparing(String::valueOf))
.ifPresent(e -> maxVo.set(e.getTime()));
mu.setTime(minVo.toString());
mu.setOutTime(maxVo.toString());
}
}
}
Stream 多字段分组 并判断list string类型最大最小值
最新推荐文章于 2022-04-01 16:09:37 发布