JDK1.8 stream流式数据处理检查list中是否有重复元素,并返回重复元素
@Data
public class Dept {
private String deptCode;
private String deptName;
}
public static List<String> getDuplicateElements(List<Dept> list, boolean flag) {
return list.stream()
.map(e -> {
return flag ? e.getDeptCode() : e.getDeptName();
}).collect(Collectors.toMap(e -> e, e -> 1, Integer::sum))
.entrySet().stream()
.filter(entry -> entry.getValue() > 1)
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
public static void main(String[] args) {
List<Dept> list = new ArrayList<>();
Dept dept1 = new Dept();
dept1.setDeptCode("10001");
dept1.setDeptName("AAA");
Dept dept2 = new Dept();
dept2.setDeptCode("10002");
dept2.setDeptName("BBB");
Dept dept3 = new Dept();
dept3.setDeptCode("10003");
dept3.setDeptName("CCC");
Dept dept4 = new Dept();
dept4.setDeptCode("10004");
dept4.setDeptName("DDD");
Dept dept5 = new Dept();
dept5.setDeptCode("10005");
dept5.setDeptName("EEE");
Dept dept6 = new Dept();
dept6.setDeptCode("10006");
dept6.setDeptName("FFF");
list.add(dept1);
list.add(dept2);
list.add(dept3);
list.add(dept4);
list.add(dept5);
list.add(dept6);
list.add(dept1);
List<String> duplicateElements = getDuplicateElements(list, false);
System.out.println(duplicateElements);
}
Java8 中 List 转 Map(Collectors.toMap) 使用技巧