Мы создаем Set
как:
Set myset = new HashSet()
Как мы создаем List
в Java?
java
list
collections
user93796
источник
источник
Ответы:
или с дженериками ( Java 7 или более поздняя версия)
или с дженериками (старые версии Java)
источник
Кроме того, если вы хотите создать список, в котором есть что-то (хотя это будет фиксированный размер):
источник
Позвольте мне подвести итог и добавить кое-что:
JDK
гуайява
Неизменный список
Пустой неизменяемый список
Список персонажей
Список целых чисел
источник
Ints.asList
не создает неизменный список, но список фиксированного размера, подкрепленный заданным массивом целых чисел (т.е. он поддерживаетList.set(int, Object)
). Второй пример «Неизменяемого списка символов» также не является неизменным (я бы удалил эту строку).В Java 8
Чтобы создать непустой список фиксированного размера (такие операции, как добавление, удаление и т. Д. Не поддерживаются):
Чтобы создать непустой изменяемый список:
В Java 9
Используя новые
List.of(...)
статические фабричные методы:В Java 10
Используя вывод типа локальной переменной :
И следовать лучшим практикам ...
Не используйте сырые типы
Начиная с Java 5, дженерики были частью языка - вы должны использовать их:
Программа для интерфейсов
Например, программа для
List
интерфейса:Вместо:
источник
Сначала прочитайте это , затем прочитайте это и это . 9 раз из 10 вы будете использовать одну из этих двух реализаций.
На самом деле, просто прочитайте Sun's Guide по структуре коллекций .
источник
ArrayList
. Если я работаю только с концами списка, это deque (или очередь), и я используюArrayDeque
реализацию. Причина в том, что, хотя реализации на основе массива могут тратить некоторую память на пустые слоты (когда я не могу предсказать необходимую емкость), для небольших коллекций это сопоставимо с накладными расходами всех экземпляров узла в связанном списке ( или deque). И в ответ я получаю произвольный доступ. Какое уникальное преимуществоLinkedList
дает?источник
Начиная с Java 7, у вас есть вывод типов для создания универсального экземпляра , поэтому нет необходимости дублировать универсальные параметры в правой части назначения:
Список фиксированного размера может быть определен как:
Для неизменяемых списков вы можете использовать библиотеку Guava :
источник
Список просто интерфейс, как Set .
Подобно тому, как HashSet является реализацией Set, которая имеет определенные свойства в отношении добавления / поиска / удаления производительности, ArrayList является голой реализацией List.
Если вы посмотрите документацию для соответствующих интерфейсов, вы найдете «Все известные классы реализации» и сможете решить, какой из них больше подходит для ваших нужд.
Скорее всего, это ArrayList .
источник
List
является интерфейсом какSet
и имеетArrayList
иLinkedList
как реализации общего назначения .Мы можем создать список как:
Мы также можем создать список фиксированного размера как:
Мы почти всегда будем использовать в
ArrayList
противоположностьLinkedList
реализации:LinkedList
использует много места для объектов и плохо работает, когда у нас много элементов.LinkedList
требует времени O (n) по сравнению с O (1) вArrayList
.Список, созданный
Arrays.asList
выше, не может быть изменен структурно, но его элементы все еще могут быть изменены.Java 8
Согласно документу , метод
Collections.unmodifiableList
возвращает неизменяемое представление указанного списка. Мы можем получить это как:Java 9
Если мы используем Java 9, тогда:
Java 10
В случае, если мы находимся на Java 10, метод
Collectors.unmodifiableList
возвратит экземпляр действительно неизменяемого списка, представленного в Java 9. Проверьте этот ответ для получения дополнительной информации о разнице вCollections.unmodifiableList
vsCollectors.unmodifiableList
в Java 10 .источник
Иногда - но только очень редко - вместо нового ArrayList вы можете захотеть новый LinkedList. Начните с ArrayList, и если у вас есть проблемы с производительностью и доказательства того, что список является проблемой, и много добавлений и удалений в этот список - тогда - не раньше - переключитесь на LinkedList и посмотрите, улучшатся ли вещи. Но в основном придерживайтесь ArrayList и все будет хорошо.
источник
Или с дженериками
Вы можете, конечно, заменить строку любым типом переменной, например Integer.
источник
Один пример:
Вы можете посмотреть на javadoc для List и найти все известные классы реализации
List
интерфейса, которые включены в java api.источник
Используя Google Collections , вы можете использовать следующие методы в классе Lists
Существуют перегрузки для инициализации и инициализации varargs из
Iterable<T>
.Преимущество этих методов состоит в том, что вам не нужно явно указывать универсальный параметр, как это было бы с конструктором - компилятор выведет его из типа переменной.
источник
Вам нужно импортировать
List
иArrayList
.источник
Больше возможностей сделать то же самое с Java 8, не лучше, не хуже, просто по-другому, и если вы хотите проделать дополнительную работу со списками, Streams предоставит вам больше альтернатив (фильтр, отображение, уменьшение и т. Д.)
источник
С Java 9 вы можете сделать следующее для создания неизменяемого
List
:источник
В качестве опции вы можете использовать двойную инициализацию здесь:
источник
Есть много способов создать набор и список. HashSet и ArrayList - это только два примера. В наши дни также довольно распространено использование дженериков с коллекциями. Я предлагаю вам взглянуть на то, что они
Это хорошее введение для встроенных коллекций Java. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
источник
Лучше использовать дженерики, как указано ниже:
Если вы используете LinkedList.
источник
Используя Eclipse Collections, вы можете создать список следующим образом:
Если вы хотите неизменный список:
Вы можете избежать автобокса, используя примитивные списки. Вот как вы можете создавать int списки:
Есть варианты для всех 8 примитивов.
Примечание: я являюсь коммиттером для Eclipse Collections.
источник
Ниже приведены некоторые способы создания списков.
Это создаст список с фиксированным размером, добавление / удаление элементов невозможно,
java.lang.UnsupportedOperationException
если вы попытаетесь это сделать, вы получите список .Следующая версия представляет собой простой список, где вы можете добавлять / удалять любое количество элементов.
Это как создать
LinkedList
в Java, если вам нужно делать частые вставки / удаления элементов в списке, вы должны использоватьLinkedList
вместоArrayList
источник
Arrays.asList("Male", "Female")
.Попробуй это:
Или:
источник
Если вам нужен сериализуемый, неизменяемый список с одной сущностью, которую вы можете использовать:
источник
Как объявление списка массивов в Java похоже
Существует множество способов создания и инициализации списка массивов в Java.
источник