我可以将以下代码缩减为一两行吗?
DTO dto;
List<DTO> dtos;
List<Integer> list1 = dtos.stream().map(DTO::getFirstId).distinct().collect(Collectors.toList());
List<Integer> list2 = dtos.stream().map(DTO::getSecondId).distinct().collect(Collectors.toList());
List<Integer> reducedId = list1.stream().filter(list2::contains).collect(Collectors.toList());
最佳答案
在这里使用单个Java 8流不是一个很好的选择。
相反,您应该首先创建一个Set,以便可以执行有效的包含测试。
Set<Integer> secondIds = dtos.stream().map(DTO::getSecondId).collect(Collectors.toSet());
List<Integer> reducedIds = dtos.stream().map(DTO::getFirstId).distinct()
.filter(secondIds::contains).collect(Collectors.toList());
关于java - Java 8流唯一整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42440189/