2012-04-06 3 views
2

Мне нужно создать коллекцию уникальной коллекции в java. Не могли бы вы предложить возможные контейнеры для этого.Список уникальных списков в java

Я хочу иметь что-то вроде List<List<int>>, где каждый из списка может повториться в терминах его содержимого.

Например, если мое текущее состояние родительского списка говорит [ [1,2,3], [3,4,5], [4,5,6] ] и если я намерен добавить еще один список сказать [3,4,5] к нему, он не должен быть повторен и не должен быть добавлен.

содержит() метод List будет работать с целыми числами, поплавками и т. Д., Но я не уверен, что он сможет сопоставлять списки.

Пожалуйста, предложите любой другой контейнер, который мог бы помочь.

Спасибо.

+8

использование ** комплект ** вместо ** список ** –

ответ

3

Возможно, вам будет лучше всего использовать Set<List<Integer>> вместо List<List<Integer>>.

выше применительно к вашему примеру:

Set<List<Integer>> uniqueLists = new HashSet<>(); 
uniqueLists.add(Arrays.asList(1, 2, 3)); 
uniqueLists.add(Arrays.asList(3, 4, 5)); 
uniqueLists.add(Arrays.asList(4, 5, 6)); 

// Now, this won't be added: 
uniqueLists.add(Arrays.asList(3, 4, 5)); 

Будьте осторожны, когда вы кладете коллекцию внутри набора, хотя. Вы не должны изменять его снова, после того как вы положили его в набор.

2

Возможно, вам будет интересно использовать Set<Set<Integer>>.
Если вы хотите сохранить заказ на добавление, вы можете использовать LinkedHashSet.

Ваш код будет как

Set<Set<Integer> uniqueLists = new LinkedHashSet<Set<Integer>>(); 

uniqueLists.add(new LinkedHashSet(Arrays.asList(1, 2, 3))); 

Было бы избежать двух проблем с использованием Set<List<Integer>>.

1) Это было бы сохраняет аддитивный порядок отдельных списков

2) Это индивидуальный список также не имеет дублирующие целые записи.

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