2015-06-09 4 views
-6

Есть 2 комплекта с дубликатами set1 ={1,2,3,4,5}set2 = {1,3,6,7} и результат должен быть set3 ={2,4,5,6,7} Пожалуйста, позвольте мне повторить, что я хочу использовать набор интерфейс и набор результатов следует заказывать естественно.Удаление дубликатов из ArrayList, используя набор

+0

Так что вы пробовали до сих пор? Вы посмотрели интерфейс 'Set'? –

+0

Да, посмотрел на этот вопрос. –

+1

[this] (http://stackoverflow.com/questions/5868808/api-for-set-operations-in-java) [имеет] (http://stackoverflow.com/questions/3590677/how-to-union -intersect-difference-and-reverse-data-in-java) [was] (http://stackoverflow.com/questions/15575417/how-to-remove-common-values-from-two-array-list) [ спросил (http://stackoverflow.com/questions/5943330/common-elements-in-two-lists) [до] (http://stackoverflow.com/questions/9917787/merging-two-arraylists-into-a -new-ArrayList-с-не-дубликаты-и-в-порядок-дюйм). Мы хотим помочь людям, но, пожалуйста, проверьте google перед тем, как задать вопрос :) –

ответ

2
  • Найти пересечение
  • Найти объединение
  • Вычтите пересечение с профсоюзом

Код:

public static void main(String[] args) { 

    Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5)); 
    Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(1, 3, 6, 7)); 

    Set<Integer> intersection = new HashSet<Integer>(set1); 
    intersection.retainAll(set2); 

    // set1 is now the union of set1 and set2 
    set1.addAll(set2); 

    // set1 is now (union - intersection) 
    // All elements in set1 or set2, but not in both set1 & set2 
    set1.removeAll(intersection); 

    for(Integer n : set1) { 
     System.out.println(n); 
    } 
} 

Выход:

2 
4 
5 
6 
7 
+0

Очень хорошо закодировано! Gracias! –

1

Вы можете попробовать это -

Set set1, set2; 
Set newSet = new HashSet(set1); 
newSet.addAll(set2); 
+0

Будет ли задан результирующий набор? –

+1

Это правильно? Разве вы не должны получить союз, получить пересечение и удалить пересечение из союза? – Gosu

Смежные вопросы