В чем разница между Set и List?

thx Pentium10 - вы заставили меня присоединиться к stackoverflow :) - это мой портирование на msaccess - думаю, что он будет работать в любой версии:

SELECT date_value
FROM (SELECT a.espr1+(10*b.espr1)+(100*c.espr1) AS integer_value,
dateadd("d",integer_value,dateserial([start_year], [start_month], [start_day])) as date_value
FROM (select * from 
    (
    select top 1 "0" as espr1 from MSysObjects
    union all
    select top 1 "1" as espr2 from MSysObjects
    union all
    select top 1 "2" as espr3 from MSysObjects
    union all
    select top 1 "3" as espr4 from MSysObjects
    union all
    select top 1 "4" as espr5 from MSysObjects
    union all
    select top 1 "5" as espr6 from MSysObjects
    union all
    select top 1 "6" as espr7 from MSysObjects
    union all
    select top 1 "7" as espr8 from MSysObjects
    union all
    select top 1 "8" as espr9 from MSysObjects
    union all
    select top 1 "9" as espr9 from MSysObjects
    ) as a,
    (
    select top 1 "0" as espr1 from MSysObjects
    union all
    select top 1 "1" as espr2 from MSysObjects
    union all
    select top 1 "2" as espr3 from MSysObjects
    union all
    select top 1 "3" as espr4 from MSysObjects
    union all
    select top 1 "4" as espr5 from MSysObjects
    union all
    select top 1 "5" as espr6 from MSysObjects
    union all
    select top 1 "6" as espr7 from MSysObjects
    union all
    select top 1 "7" as espr8 from MSysObjects
    union all
    select top 1 "8" as espr9 from MSysObjects
    union all
    select top 1 "9" as espr9 from MSysObjects
    ) as b,
    (
    select top 1 "0" as espr1 from MSysObjects
    union all
    select top 1 "1" as espr2 from MSysObjects
    union all
    select top 1 "2" as espr3 from MSysObjects
    union all
    select top 1 "3" as espr4 from MSysObjects
    union all
    select top 1 "4" as espr5 from MSysObjects
    union all
    select top 1 "5" as espr6 from MSysObjects
    union all
    select top 1 "6" as espr7 from MSysObjects
    union all
    select top 1 "7" as espr8 from MSysObjects
    union all
    select top 1 "8" as espr9 from MSysObjects
    union all
    select top 1 "9" as espr9 from MSysObjects
    ) as c   
)  as d) 
WHERE date_value 
between dateserial([start_year], [start_month], [start_day]) 
and dateserial([end_year], [end_month], [end_day]);

, на который ссылаются MSysObjects, просто потому, что для доступа нужен стол countin 'по крайней мере 1 запись, в условии from - любая таблица с не менее чем 1 записью.

381
задан JJJ 15 September 2012 в 08:45
поделиться

8 ответов

Список - это упорядоченная последовательность элементов тогда как Set - это отдельный неупорядоченный список элементов (спасибо, Quinn Taylor ).

List :

Упорядоченная коллекция (также известная как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в список каждый элемент вставлен. В пользователь может получить доступ к элементам по их целочисленный индекс (позиция в списке), и найдите элементы в списке.

Set :

Коллекция, не содержащая повторяющиеся элементы. Более формально наборы не содержат пары элементов e1 и e2 такие, что e1.equals (e2), и at самый один нулевой элемент. Как подразумевается название, этот интерфейс моделирует математическая абстракция множества.

485
ответ дан 22 November 2019 в 23:45
поделиться

Все классы List поддерживают порядок вставки. Они используют различные реализации, основанные на производительности и других характеристиках (например, ArrayList для скорости доступа к определенному индексу, LinkedList для простого поддержания порядка). Поскольку ключа нет, дубликаты разрешены.

Классы Set не поддерживают порядок вставки. Они могут необязательно устанавливать определенный порядок (как в SortedSet ), но обычно имеют порядок, определяемый реализацией, на основе некоторой хеш-функции (как в случае HashSet ). Поскольку Наборы доступны по ключу, дублирование не допускается.

2
ответ дан 22 November 2019 в 23:45
поделиться

Упорядочивание ... в списке есть порядок, а в наборе нет.

1
ответ дан 22 November 2019 в 23:45
поделиться

Набор - это неупорядоченная группа отдельных объектов - дублирование объектов не допускается. Обычно это реализуется с использованием хэш-кода вставляемых объектов. (Определенные реализации могут добавлять порядок, но сам интерфейс Set - нет.)

Список - это упорядоченная группа объектов, которые могут содержать дубликаты. Это может быть реализовано с помощью ArrayList , LinkedList и т. Д.

5
ответ дан 22 November 2019 в 23:45
поделиться

Возможно, это не тот ответ, который вы ищете, но JavaDoc классов коллекций на самом деле довольно информативен. Скопировано / вставлено:

Упорядоченная коллекция (также известная как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в список каждый элемент вставлен. В пользователь может получить доступ к элементам по их целочисленный индекс (позиция в списке), и поиск элементов в списке.

В отличие от наборов, списки обычно позволяют повторяющиеся элементы. Более формально списки обычно допускают пары элементы e1 и e2 такие, что e1.equals (e2), и они обычно разрешить несколько нулевых элементов, если они разрешить нулевые элементы вообще. Это не немыслимо, чтобы кто-то мог пожелать реализовать список, запрещающий дубликаты, бросая время выполнения исключения, когда пользователь пытается вставьте их, но мы ожидаем этого использования

5
ответ дан 22 November 2019 в 23:45
поделиться
  • Список - это упорядоченная группировка элементов
  • Набор - это неупорядоченная группа элементов, не допускающая дублирования (обычно)

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

16
ответ дан 22 November 2019 в 23:45
поделиться

Упорядоченные списки элементов (уникальные или нет)
Соответствуют интерфейсу Java с именем Список
Доступен по индексу

, реализованному с помощью

  • LinkedList
  • ] ArrayList

Списки уникальных элементов:
Соответствует интерфейсу Java с именем Set
Можно не получить доступ по индексу

, реализованному с использованием

  • HashSet (неупорядоченный)
  • LinkedHashSet (упорядоченный)
  • TreeSet (отсортированный в естественном порядке или по предоставленному компаратору)

Оба интерфейса Set и List соответствуют интерфейсу Java с именем Collection

69
ответ дан 22 November 2019 в 23:45
поделиться

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

27
ответ дан 22 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: