В чем разница между Set и List? - PullRequest
378 голосов
/ 24 июня 2009

В чем принципиальная разница между интерфейсами Set<E> и List<E>?

Ответы [ 24 ]

0 голосов
/ 08 апреля 2015

Как и ответ, так как SET не имеет повторяющегося значения, а List может. Конечно, порядок - это еще одна вещь, чтобы отличать их друг от друга.

0 голосов
/ 22 февраля 2013

Вот яркий пример с groovy. Я создаю набор и список. Затем я пытаюсь сохранить 20 случайно сгенерированных значений в каждом списке. сгенерированное значение может быть в диапазоне от 0 до 5

s = [] as Set
l = []

max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}


println "\n"
println "Set : $s "
println "list : $l

Результат:

случайные числа: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3

Набор: [4, 1, 0, 2, 3]

список: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]

Вы видите, что разница в том, что:

  • Set не допускает дублирования значений.
  • Список допускает повторяющиеся значения.
0 голосов
/ 15 июня 2014

Установка:

Не может иметь повторяющиеся значения Заказ зависит от реализации. По умолчанию это не заказано Не может иметь доступ по индексу

Список:

Может иметь повторяющиеся значения Упорядочено по умолчанию Может иметь доступ по индексу

0 голосов
/ 17 апреля 2014

Название темы: Список VS Set

Я только что прошел самую важную тему Java под названием Collections Framework. Я думал поделиться своими маленькими знаниями о коллекциях с вами. Список, Набор, Карта - самая важная тема этого. Итак, начнем с List и Set.

Разница между списком и набором:

  1. List - это класс коллекции, который расширяет класс AbstractList, где Set - это класс коллекции, который расширяет класс AbstractSet, но оба реализуют интерфейс Collection.

  2. Интерфейс списка допускает дублирование значений (элементов), тогда как интерфейс Set не допускает дублирования значений. В случае дублирования элементов в Set, он заменяет более старые значения.

  3. Интерфейс списка допускает значения NULL, в то время как интерфейс Set не допускает значения NULL. В случае использования нулевых значений в Set это дает NullPointerException.

  4. Интерфейс списка поддерживает порядок вставки. Это означает, как мы добавляем элементы в список таким же образом, как мы получаем его, используя итератор или для каждого стиля. Принимая во внимание, что Set реализации не обязательно поддерживают порядок вставки. (Хотя SortedSet использует TreeSet, а LinkedHashSet поддерживает порядок вставки).

  5. Интерфейс списка имеет свои собственные определенные методы, тогда как интерфейс Set не имеет своего собственного метода, поэтому Set использует только методы интерфейса Collection.

  6. Интерфейс списка имеет один унаследованный класс с именем Vector, тогда как интерфейс Set не имеет унаследованного класса

  7. Последнее, но не по значению ... Метод listIterator() можно использовать только для циклического перемещения по элементам внутри List List, в то время как мы можем использовать метод iterator () для доступа к элементам Set класса

Что-нибудь еще мы можем добавить? Пожалуйста, дайте мне знать.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...