遍历集合并将所有值放入列表中

时间:2014-10-06 13:19:00

标签: java collections

我有一个集合[[140], [141,143], [11], [11,22]] 获取这些数字并将它们存储到没有重复项的数组列表中的最佳方法是什么?

[140,141,143,11,22]

1 个答案:

答案 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。也许可以尝试并行。