Как следует из названия, коллекция — это группа объектов, а структура коллекции Java предоставляет реализации, которые могут содержать группу объектов.
Коллекция Java разделена на 4 основных раздела:
- Набор
- Список
- Очередь
- карта
SET — это структура данных, в которой хранятся уникальные объекты. В java Set - это интерфейс, и он имеет 3 реализации:
- HashSet — набор, который размещает неупорядоченные и несортированные объекты. HashSet используется, когда порядок вставки/расположения объектов не важен. Внутри он использует HashMap для хранения элементов.
- LinkedHashSet — Установите, в каком порядке вставки сохраняется.
- TreeSet — Набор, в котором объекты размещаются в отсортированном порядке.
СПИСОК. Это структура данных, в которой мы можем хранить упорядоченный набор объектов. Он может иметь повторяющиеся значения. Список представляет собой интерфейс в java, а ниже приведены реализации:
- ArrayList — внутри он хранит данные в динамическом массиве. ArrayList используется, когда доступ к элементам осуществляется чаще, чем вставка/удаление.
- LinkedList — внутри он хранит данные в LinkedList. Он используется, когда операция вставки/удаления используется чаще, чем операция чтения.
- Вектор — это также используемый массив в качестве внутренней структуры данных. Отличие ч/б ArrayList и Vector в том, что Vector является потокобезопасным, т.е. все функции синхронизированы.
Очередь —линейная структура данных, в которой данные хранятся в порядке LIFO.
- LinkedList — LinkedList реализует интерфейс List и Queue.
- PriorityQueue — это очередь, в которой каждый вставленный элемент также связан с приоритетом, и элемент с наибольшим приоритетом будет удален первым. Внутри он использует структуру данных Heap.
Карта – это набор объектов пары "ключ-значение". Он имеет 4 реализации-
- HashMap - данные хранятся как неупорядоченные и несортированные
- LinkedHashMap — порядок вставки сохраняется
- Hashtable-Legacy Map, которая является потокобезопасной, а данные хранятся как неупорядоченные и несортированные.
- TreeMap-ключи хранятся в отсортированном порядке. Внутренне используется красно-черное дерево для хранения данных.
КОД -
импортировать java.util.*;
импортировать java.lang.*;
импортировать java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
// Set использует метод hashcode & equals
Set ‹Integer› set = new HashSet‹›();
set.add(1);
set.add(2);
set.add(1);
System.out.println(set.size());
set.remove(1);
System.out.println(set.size());
// ArrayList — удалить, содержит метод equals для проверки наличия элемента
List‹Integer› list = new ArrayList‹›();
list.add(1) ;
list.add(2);
System.out.println(list.get(0));
list.remove((int)0); // удалить в позиции 0
System.out.println(list.get(0));
list.remove((Integer)2); // удалить целочисленный объект 2
System.out.println(list.size());
list.add(10);
list.add(1);< br /> list.add(100);
Collections.sort(list);
/* используется метод compareTo и порядок по умолчанию восходящий */
System.out.println(Arrays.toString(list.toArray()));
Collections.sort(список, (а, б) -> б-а );
/*
Пользовательский компаратор передается в качестве параметра, который будет использоваться для принятия решения о замене.
Например, если 2-й объект b больше, чем первый объект a, тогда верните положительный результат, чтобы создать порядок описания
*/
System.out.println(Arrays.toString(list.toArray()));
// HashMap использует метод hashcode & equals
Map‹Integer, Integer› map = new HashMap‹›();
map.put(1,2);
System.out.println(map.get(1));
System.out.println(map. containsKey(1));
map.remove(1);
System.out.println(map.size());
map.put(10,20);
> map.putIfAbsent(10,10);
System.out.println(map.get(10));
System.out.println(map.getOrDefault(12, 0));
// Очередь — LinkedList
// Очередь с приоритетом работает так же, но удаляет самый приоритетный объект, который вычисляется с помощью метода compareTo
Queue‹Integer› queue = новый LinkedList‹›();
queue.add(1);
queue.add(2);
System.out.println(queue.element());
queue.remove();
System.out.println(queue.element());
}
}
ВЫВОД -
2 1 1 2 0 [1, 10, 100] [100, 10, 1] 2 true 0 20 0 1 2