Бесплатный курс по Java: от основ до продвинутого уровня
Интерфейс Set в Java
Благодаря классам реализующим Set можно создать массив в которомэлементы не повторяются.
HashSetэто как hashmap, только без значений, только ключи.
В hashset могут храниться только уникальные ключи, благодаря уже ранее упомянутому hashcode, который есть у каждого элемента добавляемого в hashset.
Поясним на примере:
import java.util.*;
public class Set {
public static void main(String[] args) {
// создаем коллекцию
HashSet hSet = new HashSet();
// добавление элемента
hSet.add(“Sunday”);
hSet.add(“Monday”);
hSet.add(“Sunday”);
hSet.add(“Tuesday”);
// удаление элемента
hSet.remove(“Monday”);
// в hashset нету get поэтому сначала нужно преобразовать
// в массив а потом извлекать либо использовать iterator
String[] hSetArr = hSet.toArray(new String[hSet.size()]);
for(int i = 0; i < hSetArr.length; i++) {
System.out.println(hSetArr[i]);
}
// проверка на наличие элемента в списке
System.out.println(hSet.contains("Tuesday"));
// Как можно увидеть по результатам в массиве всего один Sunday
}
}
Вывод:
TreeSet
TreeSet – хранит элементы в виде дерева, что позволяет быстрее искать элементы.
Все элементы отсортированы и не повторяются.
TreeSet лучше всего подходит для нахождения диапазонов.
Пример программы:
import java.util.*;
public class Set {
public static void main(String[] args) {
// создаем коллекцию
TreeSet tSet = new TreeSet();
// добавление элемента
tSet.add(“D”);
tSet.add(“B”);
tSet.add(“A”);
tSet.add(“C”);
tSet.add(“E”);
// удаление элемента
tSet.remove(“C”);
// В TreeSet нету get поэтому сначала нужно преобразовать
// в массив а потом извлекать либо использовать iterator
String[] tSetArr = tSet.toArray(new String[tSet.size()]);
for(int i = 0; i < tSetArr.length; i++) {
System.out.println(tSetArr[i]);
}
// проверка на наличие элемента в списке
System.out.println(tSet.contains("П"));
// для нахождения диапазона
System.out.println(tSet.tailSet("B"));
System.out.println(tSet.headSet("B"));
// Как можно увидеть по результатам в массиве
// всего один В и элементы хранятся в алфавитном порядке
}
}
Вывод:
LinkedHashSet
LinkedHashSet – хранит элементы в порядке вставки и элементы не повторяются.
Опять таки, лучше использовать когда элементы часто вставляются/удаляются.
Пример программы:
import java.util.*;
public class Set {
public static void main(String[] args) {
// создаем коллекцию
LinkedHashSet ltSet = new LinkedHashSet();
// добавление элемента
ltSet.add(“D”);
ltSet.add(“B”);
ltSet.add(“A”);
ltSet.add(“C”);
ltSet.add(“B”);
// удаление элемента
ltSet.remove(“C”);
// LinkedHashSet нету get поэтому сначала нужно преобразовать
// в массив а потом извлекать либо использовать iterator
String[] ltSetArr = ltSet.toArray(new String[ltSet.size()]);
for(int i = 0; i< ltSetArr.length; i++) {
System.out.println(ltSetArr[i]);
}
// проверка на наличие элемента в списке
System.out.println(ltSet.contains("B"));
//Как можно увидеть по результатам в масиве всего один В
// элементы хранятся в порядке вставки
}
}