2014-12-03 2 views
1

Один из вопросов, я был дан спрашивает:Что означает список <Set<Integer>> означает?

Все линии должны быть сохранены в объекте типа List<Set<Integer>>.

Как вы пишете это на Java, как в том, как вы инициализируете этот список? Я никогда не видел этого раньше.

Просьба указать ссылку на объяснение, так как я не уверен, что это называется на Java, поэтому понятия не имею, как узнать об этом. Спасибо.

+0

Я редактировал вопрос для вас, но в будущем, вы можете использовать кавычку ('), чтобы указать фрагменты кода, чтобы угловые скобки работали. – yshavit

+1

Используется [generics] (https://docs.oracle.com/javase/tutorial/java/generics/why.html). Данный список представляет собой набор наборов, которые являются наборами целых чисел. – scrappedcola

ответ

4

Сво Список из Набор с, где каждый Set может содержать только Integer s.

Set<Integer> singlesSet = new HashSet<>(); 
singlesSet.add(1); 
singlesSet.add(2); 

Set<Integer> tensSet = new HashSet<>(); 
tensSet.add(10); 
tensSet.add(20); 

List<Set<Integer>> list = new ArrayList<>(); 
list.add(singlesSet); 
list.add(tensSet); 

System.out.println(list); 
+1

Обратите внимание, что в Java 7 и выше вы можете использовать «оператор бриллианта» в операциях 'new':' new HashSet <>() 'и' new ArrayList <>() '. – yshavit

+0

Спасибо @yshavit. Отредактированный код, чтобы отразить это. –

+0

Это то же самое, что и в моем примере, и вы получаете +4, а я только +1 :(И я был быстрее:/ – martijnn2008

0

В Java интерфейс List представляет собой абстрактный список вещей. Любой класс, который реализует List (например, LinkedList), должен реализовать свои методы и вести себя в соответствии с его контрактом.

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

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

Integer, конечно же, это всего лишь обертка объекта вокруг примитива Java int.

Таким образом, объект List<Set<Integer>> будет аналогичным двумерному массиву, только без определенного порядка во втором измерении.

Вы бы инициализировать List<Set<Integer>> следующим образом:

List<Set<Integer>> myList = new ArrayList<HashSet<Integer>>(); 

Где ArrayList и HashSet могут быть любые классы, реализующие List и Set соответственно.

3

Пример использования Set и List. Обратите внимание, что элементы в TreeSet всегда сортируются.

List<Set<Integer>> listofsets = new ArrayList<Set<Integer>>(); 
Set<Integer> set1 = new TreeSet<Integer>(); 
set1.add(1); 
set1.add(2); 

Set<Integer> set2 = new TreeSet<Integer>(); 
set2.add(6); 
set2.add(4); 

listofsets.add(set); 

// listofsets = {{1,2}, {4,6}} 
+0

Блестящий пример, спасибо! – Kingsta1993

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