2014-10-06 3 views
-2

У меня есть коллекция [[140], [141,143], [11], [11,22]] Каков наилучший способ взять эти цифры и сохранить их в списке массивов без дубликатов?Iterate через коллекцию и поместить все значения в список

[140,141,143,11,22] 
+1

Вас интересует заказ? –

+1

Это коллекция коллекций? сбор массивов? –

+0

Вы должны использовать [заданные операции] (http://stackoverflow.com/questions/163998/classical-set-operations-for-java-util-collection), что в основном то, что вам нужно. – sxleixer

ответ

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. И, может быть, эксперимент с параллелью.