Мы создаем Set
как:
Set myset = new HashSet()
Как создать список
в Java?
List myList = new ArrayList();
или с дженериками (Java 7 или более поздняя версия)
List<MyType> myList = new ArrayList<>();
или с дженериками (старые версии java)
List<MyType> myList = new ArrayList<MyType>();
Кроме того, если вы хотите создать список, что есть вещи, которые в нем (хотя это будет фиксированный размер):
List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
Позвольте мне подвести итог и кое-что добавить:
1. new ArrayList<String>();
2. Arrays.asList("A", "B", "C")
1. Lists.newArrayList("Mike", "John", "Lesly");
2. Lists.asList("A","B", new String [] {"C", "D"});
Неизменяемого Списка
1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B")));
2. ImmutableList.builder() // Guava
.add("A")
.add("B").build();
3. ImmutableList.of("A", "B"); // Guava
4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C")); // Guava
Пустой неизменяемый список
1. Collections.emptyList();
2. Collections.EMPTY_LIST;
Список персонажей
1. Lists.charactersOf("String") // Guava
2. Lists.newArrayList(Splitter.fixedLength(1).split("String")) // Guava
Список целых чисел
Ints.asList(1,2,3); // Guava
Чтобы создать непустой список фиксированного размера (такие операции, как добавление, удаление и т. д. не поддерживаются):
List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported
Чтобы создать непустой Мутабельный список:
List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));
Используя новый список .из(...)
статические методы фабрики:
List<Integer> immutableList = List.of(1, 2);
List<Integer> mutableList = new ArrayList<>(List.of(3, 4));
Используя локальная переменная типа вывода:
var list1 = List.of(1, 2);
var list2 = new ArrayList<>(List.of(3, 4));
var list3 = new ArrayList<String>();
И следуйте рекомендациям...
Начиная с Java 5, дженерики были частью языка - вы должны использовать их:
List<String> list = new ArrayList<>(); // Good, List of String
List list = new ArrayList(); // Bad, don't do that!
Например, программу "список" интерфейс:
List<Double> list = new ArrayList<>();
Вместо:
ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!
Впервые прочитал в <а href="и http://java.sun.com/javase/6/docs/api/java/util/List.html">это</а>, то читайте на <а href="и http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html">это</а> и <а href="и http://java.sun.com/javase/6/docs/api/java/util/LinkedList.html">это</а>. В 9 случаях из 10 вы'будете использовать один из этих двух реализаций.
На самом деле, просто читать <а href="http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html">Sun'руководство для коллекции рамок</а>.
Начиная с Java 7 вы вывод типа для универсального создания экземпляра, поэтому нет необходимости дублировать универсальные параметры на правой стороне задания:
List<String> list = new ArrayList<>();
Список фиксированного размера может быть определена как:
List<String> list = Arrays.asList("foo", "bar");
Для неизменяемых списков вы можете использовать фейхоа библиотека:
List<String> list = ImmutableList.of("foo", "bar");
//simple example creating a list form a string array
String[] myStrings = new String[] {"Elem1","Elem2","Elem3","Elem4","Elem5"};
List mylist = Arrays.asList(myStrings );
//getting an iterator object to browse list items
Iterator itr= mylist.iterator();
System.out.println("Displaying List Elements,");
while(itr.hasNext())
System.out.println(itr.next());
Список представляет собой интерфейс просто как набор.
Как для поиска HashSet является реализация комплекса, который обладает определенными свойствами с точки зрения добавления / поиска / удаления производительность, ArrayList является голые реализации список.
Если вы посмотрите на документацию для соответствующих интерфейсов вы найдете "все известные реализации классов" и вы можете решить, какой из них больше подходит для ваших нужд.
Есть вероятность, что это'ы коллекции.
Список
- это интерфейс, как набор
и `класса ArrayList и LinkedList не как общие реализации цели.
Мы можете создать список, как:
List<String> arrayList = new ArrayList<>();
List<String> linkedList = new LinkedList<>();
Мы также можем создать список фиксированного размера, как:
List<String> list = Arrays.asList("A", "B", "C");
Мы будем почти всегда использовать коллекции
против класса LinkedList
реализации:
класса LinkedList
требует o(n) времени по сравнению с O(1) в коллекции
.Список создается `массивы.asList выше не может быть конструктивно изменен, но его элементы все еще может быть изменен.
Согласно док, сборники метод.unmodifiableList
возвращает неподдающееся изменению представление указанного списка. Мы можем сделать это как:
Collections.unmodifiableList(Arrays.asList("A", "B", "C"));
В случае, если мы используем Ява 9 тогда:
List<String> list = List.of("A", "B");
В случае мы имеем в Java 10 тогда коллекторы метод.unmodifiableList будет возвращать экземпляр действительно неподдающийся изменению список, представленный в Java 9. Проверить этот [ответить][4] для получения дополнительной информации о разнице в коллекции.коллекционеры unmodifiableList
против`.unmodifiableList в Ява 10.
Иногда - но очень редко - вместо нового ArrayList, вы можете новый LinkedList не. Начнем с ArrayList и если у вас есть проблемы с производительностью и доказательств того, что список-это проблема, и большое добавление и удаление в список - тогда - не раньше - перейти к LinkedList и посмотреть, если ситуация не улучшится. Но в главном, придерживаться ArrayList и все будет хорошо.
List list = new ArrayList();
Или с помощью дженериков
List<String> list = new ArrayList<String>();
Конечно, вы также можете заменить string на любой тип переменной, например Integer.
Один пример:
List somelist = new ArrayList();
Вы можете посмотреть javadoc для List и найти все известные классы-реализаторы интерфейса List
, которые включены в java api.
Используя коллекциях Гугл, можно использовать следующие методы Lists класс
import com.google.common.collect.Lists;
// ...
List<String> strings = Lists.newArrayList();
List<Integer> integers = Lists.newLinkedList();
Есть перегрузки для инициализации varargs и инициализация с повторяемое в<Т>
.
Преимуществом этих методов является то, что вы Don'т должны явно указать параметр универсального как конструктор - компилятор вывести его из типа переменной.
Как вариант можно использовать вот двойной дубль инициализации:
List<String> list = new ArrayList<String>(){
{
add("a");
add("b");
}
};
Есть много способов, чтобы создать набор и список. Для поиска HashSet и ArrayList-это лишь два примера. Он также довольно часто используется дженерики с коллекциями в эти дни. Я предлагаю вам взглянуть на то, что они
Это хорошее введение для Java'с встроенной коллекции. http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
List arrList = new ArrayList();
Его лучше использовать дженерики, как предложено ниже:
List<String> arrList = new ArrayList<String>();
arrList.add("one");
В случае если вы используете LinkedList не.
List<String> lnkList = new LinkedList<String>();
Больше вариантов, чтобы сделать то же самое с Java 8, не лучше, не хуже, просто разные и если вы хотите сделать некоторые дополнительные работы со списками, потоки предоставит вам более альтернативы (фильтр, карта, сокращения и т. д.)
List<String> listA = Stream.of("a", "B", "C").collect(Collectors.toList());
List<Integer> listB = IntStream.range(10, 20).boxed().collect(Collectors.toList());
List<Double> listC = DoubleStream.generate(() -> { return new Random().nextDouble(); }).limit(10).boxed().collect(Collectors.toList());
LinkedList<Integer> listD = Stream.iterate(0, x -> x++).limit(10).collect(Collectors.toCollection(LinkedList::new));
Ниже приведены несколько способов, вы можете создать списки.
Список<строка> В fixedSizeList = массивов.asList(новый строка [] {с"мужчина" В, С "Женщина" и});
<БР/>
Список<строка> Список = новый ArrayList и Л;>();
<БР/>
класса LinkedList
вместо коллекции
Список<строка> В коллекции LinkedList = новый LinkedList не на< и GT;();