добавить список в хэш-сет, используя addAll - PullRequest
10 голосов
/ 15 февраля 2011

В Java я не могу добавить список в хэш-набор, используя метод хэширования addAll

List a = new ArrayList();
a.add(20);

List b = new ArrayList();
b.add(30);

Set set = new HashSet ( a );

set.addAll( b);

Пожалуйста, помогите

Спасибо

Ответы [ 2 ]

16 голосов
/ 15 февраля 2011

Я попробовал твой код, и он работает для меня.

Но одно дело - было бы лучше использовать универсальные версии коллекций. Это удаляет предупреждения.

List<Integer> a = new ArrayList<Integer>();
a.add(20);

List<Integer> b = new ArrayList<Integer>();
b.add(30);

Set<Integer> set = new HashSet<Integer>(a);
set.addAll(b);
2 голосов
/ 23 января 2017

Это прекрасно работает, просто если вы добавляете список в набор, повторяющиеся элементы между списком и набором добавляются только один раз.

Скажем, например, ArrayList arr имеет элементы 2,3,4и набор HashSet теперь имеет элементы 2,5,7, если вы сделаете set.addAll (arr), а затем набор все еще включает в себя 2,5,7,3,4.

Также представьте себе сценарий, в котором у вас есть ArrayListarr и HashSet устанавливают, где T является универсальным классом, содержащим несколько параметров, затем общие элементы в окончательном наборе будут удалены в соответствии с переопределенным определением метода в классе T, а добавленный в набор элемент будет сохранен в окончательном наборе над элементом вArraylist.

...