когда использовать Набор по сравнению с Набором?

Ваше текущее выражение cron должно сработать в 1:30 утра, потому что оно включает час 1, а минуты - 0,30.

Вы можете сделать это с помощью двух выражений cron:

https://stackoverflow.com/a/21274226/10441990

Или вы можете использовать фильтр выражений :

https://stackoverflow.com/a/54692465/10441990

42
задан Jason S 4 May 2009 в 18:07
поделиться

8 ответов

Collection is also the supertype of List, Queue, Deque, and others, so it gives you more options. For example, I try to use Collection as a parameter to library methods that shouldn't explicitly depend on a certain type of collection.

Generally, you should use the right tool for the job. If you don't want duplicates, use Set (or SortedSet if you want ordering, or LinkedHashSet if you want to maintain insertion order). If you want to allow duplicates, use List, and so on.

44
ответ дан 26 November 2019 в 23:52
поделиться

Как утверждает @mmyers, коллекция включает в себя как набор, так и список.

Когда вы объявляете что-то как набор, а не как коллекцию, вы говорите, что переменная не может быть списком или картой. Впрочем, это всегда будет коллекция. Таким образом, любая функция, которая принимает коллекцию, примет набор, но функция, которая принимает набор, не может взять коллекцию (если вы не преобразуете ее в набор).

3
ответ дан 26 November 2019 в 23:52
поделиться

Еще одна вещь, которую следует учитывать ... У наборов есть дополнительные накладные расходы во времени, памяти и кодировании, чтобы гарантировать отсутствие дубликатов. (Время и память, потому что наборы обычно поддерживаются HashMap или Tree, который добавляет накладные расходы на список или массив. Кодирование, потому что вы должны реализовать методы hashCode () и equals ().)

Я обычно использую наборы когда мне нужна быстрая реализация функции contains () и использования Collection или List в противном случае, даже если в коллекции не должно быть дубликатов.

3
ответ дан 26 November 2019 в 23:52
поделиться

Практическое отличие состоит в том, что Set обеспечивает логику set , то есть не дублирует и не упорядочивает, а Collection - нет. Поэтому, если вам нужна коллекция, и у вас нет особых требований избегать дублирования, используйте коллекцию. Если у вас есть требование для Set, используйте Set. Обычно используйте максимально возможный интерфейс.

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

Так как Collection является супертипом Set и SortedSet, они могут быть переданы методу, который ожидает Collection. Коллекция просто означает, что она может или не может быть отсортирована, заказать или разрешить дубликаты.

0
ответ дан 26 November 2019 в 23:52
поделиться

See Java's Collection tutorial for a good walk-through of Collection usage. In particular, check out the class hierarchy.

3
ответ дан 26 November 2019 в 23:52
поделиться

Я думаю, вы уже это поняли - используйте Set , если вы хотите специально исключить дубликаты. Коллекция обычно является наименьшим общим знаменателем, и полезно указать API-интерфейсы, которые принимают / возвращают это, что оставляет вам место для изменения деталей позже, если это необходимо. Однако, если детали вашего приложения требуют уникальных записей , используйте Set для обеспечения этого.

Также стоит подумать, важен ли для вас порядок; если это так, используйте List или LinkedHashSet , если вы заботитесь о порядке и уникальности.

8
ответ дан 26 November 2019 в 23:52
поделиться

You should use a Set when that is what you want.

For example, a List without any order or duplicates. Methods like contains are quite useful.

A collection is much more generic. I believe that what mmyers wrote on their usage says it all.

1
ответ дан 26 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

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