Коллекции (Collections) в Java. Set

августа
08
2012

Содержание

Set - следующая коллекция, которая будет рассмотрена. В статье пойдет речь об интерфейсе Set, а также о классах HashSet, LinkedHashSet и TreeSet.

Set - коллекция, которая не может содержать повторяющихся одинаковых элементов, иногда называемая множеством. Более формально, коллекция не может содержать пары элементов e1 и e2 таких, что выполняется условие e1.equals(e2) и не более одного null элемента.

На Рис.1 приведена иерархия классов Set.

Рис 1. Иерархия Set во фреймворке Collections
Рис 1. Иерархия Set во фреймворке Collections

Как видно из Рис.1, интерфейс Set, унаследовавшись от Collection, не содержит никаких новых методов.

Платформа Java содержит три универсальных реализации коллекции Set: HashSet, TreeSet и LinkedHashSet.

HashSet хранит элементы в хеш-таблице, из-за чего имеет наиболее высокую производительность, но не гарантирует порядок элементов;

TreeSet хранит элементы в отсортированном порядке, из-за чего работает существенно медленнее, чем HashSet;

LinkedHashSet отличается от HashSet тем, что хранит элементы в порядке их вставки в коллекцию. Эта коллекция лишь немного медленнее HashSet.

Многие могут задуматься, что при попытке добавлении существующего элемента в LinkedHashSet существует 2 варианта развития событий. Первый вариант - существующий элемент удаляется из коллекции, а в конец коллекции добавляется (этот же) элемент. Второй вариант - коллекция не изменяется и все элементы остаются на своих местах. В LinkedHashSet реализован второй вариант. Это демонстрирует следующий пример:


Set<String> stringSet = new LinkedHashSet<String>();
stringSet.add("2");
stringSet.add("1");
stringSet.add("2");
stringSet.add("4");
stringSet.add("3");
stringSet.add("5");
for( String entry : stringSet ){
	System.out.print( entry );
}
// Output: 21435

Ниже приведено несколько положений, о которых необходимо помнить:

< Коллекции (Collections) в Java. List Коллекции (Collections) в Java. Queue >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии