а. Характеристики
Два интерфейса унаследованы из коллекции, представляет собой набор обычно используемых для элементов хранения данных, основные отличия заключаются в следующем:
① между списком и установить очень важное отличие заключается в том, чтобы существовать дублирующие элементы, что позволяет вставлять дублирующие элементы в списке, но не позволяет существовать дублирующие элементы в наборе.
② и имеет элементы хранения, связанные с последовательностью, список представляет собой упорядоченный набор, порядок будет сохранен, когда вставляется элемент, комплект неупорядоченная коллекция.
③ Список можно получить доступ через индекс, но не указан.
б. общий класс реализации
(1) Список интерфейсов
Общий класс реализации следующим образом:
ArrayList (реализация Array) : позволяет быстрый произвольный доступ к элементам, из промежуточной вставки положения ArrayList или удаления элементов массива потребностей , которые будут скопированы, перемещены, стоимость относительно высока. Таким образом, он подходит для случайного поиска и обхода, не подходит для вставки и удаления.
Вектор (реализация массива) : Поддержка синхронизации потоков, только один поток может одновременно писать Vector, избежать многопоточности при написании несогласованность вызвала, но синхронизация требует очень высокой стоимости, поэтому доступ к нему медленнее , чем доступ к ArrayList , Вектор принадлежат потокобезопасного уровне, но в большинстве случаев без использования вектора, из - за необходимости большего потока безопасности накладные расходы (связанные с методом ArrayList очень похож, с синхронизацией изменений в методе).
Мы обнаружили , что , когда массив не достаточно большой , чтобы восстановить элементы массива копируются в новый массив, в ArrayList (+ 1 в течение 1,5 раза) , и вектор (2 раза) различное расширение размера массива.
LinkedList (реализация списка) : Это подходит для вставки динамических и удаления данных, произвольного доступа и скорости хода медленнее. Также предложен способ не определенный интерфейс List, предназначенный для работы заголовка и хвостовых элементов, может быть использован в качестве стеки, очереди, очереди и двунаправленного использования.
(2) Установить интерфейс
Общий класс реализации имеет HashSet, TreeSet и LinkedHashSet:
HashSet : При хранении в связывающем элемента к HashSet, HashSet будет ссылаться на хэш - код объекта () метод , чтобы получить значение объекта хэш - код, значение хэш - код затем определяется в соответствии с местами хранения объекта в HashSet (почему , как HashSet гарантии неповторения). То есть, определение HashSet устанавливается равным двум стандартных элементов равно метод путем сравнения двух объектов равны, и два объекта хэш - код () метод возвращает значения равны. Не могу гарантировать порядок элементов, порядок может измениться, элементы коллекции могут быть нулевыми, но только в нуль;
LinkedHashSet : установить место хранения LinkedHashSet же определяется по хэш - код элемента значение элемента, но он также используется для поддержания порядка в списке элементов. Такой , что вставные элементы выглядят как в целях экономии, то есть, при прохождении в течение заданного времени, будет добавить LinkedHashSet последовательный доступ к элементам множества элементов. LinkedHashSet когда итерация доступ ко всем элементам набора, производительность лучше , чем HashSet, но когда вы вставляете производительность немного уступает HashSet.
TreeSet : TreeSet SortedSet это единственный класс , который реализует интерфейс, базовая структура данных представляет собой красно-черное дерево, элемент коллекции TreeSet может быть обеспечен в состоянии секвенирования. TreeSet поддерживает два рода естественной сортировки и таможенного заказа , в котором естественный порядок есть порядок сортировки по умолчанию, в следующем примере:
Естественное упорядочение - для сортировки при помощи сортировки природных элементов CompareTo (OBJ Object) метод, чтобы сравнить соотношение амплитуд между элементами, и элементы расположены в порядке возрастания.
Пользовательская сортировка - естественный порядок основан на размере коллекции элементов, в порядке возрастания, если вы хотите настроить интерфейс заказа компаратора должны быть использовано для достижения Int сравнить (T o1, o2 T) Метод
Следующий пример:
пакет javase.collection; java.util.Comparator импорта; импорт java.util.Iterator; импорт java.util.TreeSet; класс Человек реализует Сопоставимые <Person> { частный ИНТ возраст; частное имя строки; общественное лицо (имя String, ИНТ возраст) { this.name = имя; this.age = возраст; } Строка ToString общественности () { вернуться "[" + имя + ":" + возраст + "]"; } общественный ИНТ СеЬАд () { вернуться возраста; } Строка GetName общественности () { вернуть имя; } @Override общественный ИНТ CompareTo (Person человек) { не // возвращает 0 равны, не добавил TreeSet вернуться this.age> person.getAge ()? 1: -1; } } класс Person2 { частный ИНТ возраст; частное имя строки; общественный Person2 (имя String, ИНТ возраст) { this.name = имя; this.age = возраст; } Строка ToString общественности () { вернуться "[" + имя + ":" + возраст + "]"; } общественный ИНТ СеЬАд () { вернуться возраста; } Строка GetName общественности () { вернуть имя; } } классового MYCOMP Реализует Comparator <Person2> { @Override общественного ИНТ сравнить (Person2 o1, o2 Person2) { Возвращение o1.getAge ()> o2.getAge ()? 1: -1; } } общественный класс CollectionTest { государственной статической силы основных (String [] арг) { // TreeSet <Person> psets = новый TreeSet <> (новый MYCOMP ()); // psets.add (новое лицо ( "Боб", 23)); // psets.add (новое лицо ( "Алиса", 36)); // psets.add (новое лицо ( "Томь", 18)); // Итератор <Person> он = psets.iterator (); // пока (it.hasNext ()) { // System.out.println (it.next ()); //} TreeSet <Person2> psets = новый TreeSet <> (новый MYCOMP ()); psets.add (новый Person2 ( "Боб", 23)); psets.add (новый Person2 ( "Алиса", 36)); psets.add (новый Person2 ( "Томь", 18)); Итератора <Person2> он = psets.iterator (); в то время как (it.hasNext ()) { System.out.println (it.next ()); } } }
// Список поворот Set Set <String> набор = новый HashSet <> (список); // Set List поворот List <String> = песни1 новый ArrayList <> (комплект);
справочный материал