根据list中的某一属性去重 eg:根据vo中的id去重
List<VO> list = voList.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(VO::getId))), ArrayList::new));
根据list中的某一属性值创建满足条件的新的集合
List<VO> vos = list.stream().filter(VO -> Boolean.TRUE.equals(vo.getStatus()))
.collect(Collectors.toList());
根据list中的某一属性值排序 eg:根据vo的修改时间倒序
list.sort(Comparator.comparing(Vo::getUpdateTime).reversed());
list.sort(Comparator.comparing(Vo::getUpdateTime,Comparator.reverseOrder())
根据id分组后取userId
Map<String, List<String>> stringListMap =list.stream().collect(Collectors.groupingBy(Vo::getId,Collectors.mapping(Vo::getUserId,Collectors.toList())));
获取 userId list
List<Long> list = Vos.stream().map(vo -> vo.getId()).collect(Collectors.toList());
list去重
List<Integer> moduleIds = list.stream().map(VO::getId).distinct().collect(Collectors.toList());
按照list对象中的某一个属性进行累加
int coin = list.stream().mapToInt(VO::getCoin).sum();
二维数组按照每行第一个数字进行排序
原写法
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
极简写法
Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
@JsonFormat:格式化后端传给前端展示的日期
@DateTimeFormat:格式化前端传来的String类型的日期