我有一个这样的列表:[1, 2, 3, 4, 2, 4, 5, 8, 2]。需要对其进行过滤,以便仅在其中多次出现的数字保留在其中。也就是说,它应该变成这样:[2, 4]. 这必须使用 Java Stream API 来完成。
想到这样的解决方案,但在我看来它不是最优化和最漂亮的:
List<Integer> input = Arrays.asList(1, 2, 3, 4, 2, 4, 5, 8, 2);
List<Integer> result = input
.stream()
.filter(x -> input.stream().filter(x::equals).count() > 1)
.distinct()
.collect(Collectors.toList());
是否有可能以某种方式隐藏流中的流并更充分地做到这一点?
从可读性的角度来看 - 对于业余爱好者......但至于效率,它似乎更好: