我有一个集合[[140], [141,143], [11], [11,22]]
获取这些数字并将它们存储到没有重复项的数组列表中的最佳方法是什么?
[140,141,143,11,22]
答案 0 :(得分:0)
Collection<Collection<Integer>> ints = new ArrayList<>();
Collections.addAll(ints,
Arrays.asList(149),
Arrays.asList(141, 143),
Arrays.asList(11),
Arrays.asList(11, 22));
// Java 8
List<Integer> flattenedUniqueInts = ints.stream()
.flatMap(x -> x.stream()).sorted().distinct()
.collect(Collectors.toList());
// Java 7, optimally using Set.
Set<Integer> result = new HashSet<>();
for (Collection<Integer> sub : ints) {
Collections.addAll(sub);
}
两个解决方案,一个用于java 8,一个用于java 7.在Java 8中,一个可以满足IntStream
结果,使用flatMapToInt
而不是collect
;使用int
代替Integer。也许可以尝试并行。