Метод хэш-код в Java и Set List На разницу в разнице между Java и Java в векторе ArrayList

 а. Характеристики

  Два интерфейса унаследованы из коллекции, представляет собой набор обычно используемых для элементов хранения данных, основные отличия заключаются в следующем:

      ① между списком и установить очень важное отличие заключается в том, чтобы существовать дублирующие элементы, что позволяет вставлять дублирующие элементы в списке, но не позволяет существовать дублирующие элементы в наборе.

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

③ Список можно получить доступ через индекс, но не указан.

б. общий класс реализации

(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 ());
        }
    }
}

с. Взаимное

  Так как список, и набор достигли интерфейс addAll Collection (Collection <? Расширяет E> с) метод, можно использовать addAll () метод List и Set взаимной конверсии; Кроме того, список и набор также обеспечивает Коллекция <простирается Е?> с в качестве параметра конструктора, часто в виде полных взаимопревращений конструктора.

// Список поворот Set
Set <String> набор = новый HashSet <> (список);
// Set List поворот
List <String> = песни1 новый ArrayList <> (комплект);

 

справочный материал

1. Массив Java, List Набор взаимного преобразования

2.  О методе Hashcode в Java

3.  Разница в Java ArrayList и Vector

рекомендация

отwww.cnblogs.com/helloworldcode/p/12122072.html