dir.by  
Поиск >>

Компьютер, программы
→
Java
→
Java (class, interface, collections, и т.д.)
 Коллекции в Java 
посмотрели 2475 раз
обновлено: 30 сентября 2026
Коллекции это списки, очереди, словари и другие классы для добавления, удаления элементов, сортировки элементов.

Все коллекции определены в пакете java.util.*

При сооздании коллекции используется тип <E> и это значит, что все элемнты одного типа.
Так как в коллекции при создании используется тип <E> поэтому коллекция называется дженерик (или другими словами типизированной).
 
Java коллекции
 
Java коллекции на основе interface List<E> (это массив т.е. добавлять и удалять элементы, получить элемент по индексу)
  Java  
class ArrayList<E>
class ArrayList<E> это массив (другими словами набор элементов).
Любой элемент можно получить по целочисленному индексу.
Вы можете добавлять и удалять элементы.
Не синхронизирован (не безопасный для потоков).
Читать подробнее class ArrayList<E> ...
синхронизирован для потоков
❌
  Java  
class Vector<E>
class Vector<E> это массив (другими словами набор элементов).
Любой элемент можно получить по целочисленному индексу.
Вы можете добавлять и удалять элементы.
Vector полностью синхронизирован (безопасный для потоков).
На заметку! Vector то же, что и ArrayList, и разница в том, что Vector полностью синхронизирован (безопасен для потоков). Vector медленнее ArrayList.
Читать подробнее class Vector<E> ...
синхронизирован для потоков
✅
  Java  
class Stack<E>
class Stack<E> расширяет class Vector<E> алгоритмом "последний вошел - первый вышел":
Каждый новый элемент помещается в самый вверх.
Первым берется элемент, который находится в самом вверху.
Stack полностью синхронизирован (безопасный для потоков).
Читать подробнее class Stack<E> ...
синхронизирован для потоков
✅
  Java  
class CopyOnWriteArrayList<E>
CopyOnWriteArrayList это то же самое, что и ArrayList, но безопасно в потоках.
В CopyOnWriteArrayList все мутационные операции (сложение, установление и т.д.) реализуются путём создания новой копии базового массива.
Читать подробнее class CopyOnWriteArrayList<E> ...
синхронизирован для потоков
✅
 
Java коллекции на основе interface Queue<E> (очередь т.е. добавление, удаление элементов по алгоритму: первым вошел - первым вышел)
Java
class PriorityQueue<E>
 
Java коллекции на основе interface Deque<E> (двусторонняя очередь т.е. добавление, удаление элементов из начала и конца)
  Java  
class LinkedList<E>
class LinkedList это набор узлов (Node). Каждый узел (Node) имеет 2 ссылки: ссылку на следующий узел (Node) и ссылку на предыдущий узел (Node).
В LinkedList можно добавлять и удалять элементы.
LinkedList не синхронизирован.
Читать подробнее class LinkedList<E> ...
синхронизирован для потоков
❌
Java
class ArrayDeque<E>
Java
class LinkedBlockingDeque<E>
Java
class ConcurrentLinkedDeque<E>
 
Java коллекции на основе interface Set<E> (коллекция уникальных элементов)
  Java  
class HashSet<E>
HashSet содержит неповторяющиеся коллекцию элементов.
HashSet содержит элементы без сортировки.
HashSet позволяет быстро определить, есть такой элемент или нет (быстро потому что, вычисляется хэш-код элемента).
Читать подробнее class HashSet<E> ...
синхронизирован для потоков
❌
LinkedHashSet реализация такая же, как HashSet, и дополнительно поддерживает двойно связанный список, проходящий через все его элементы. Этот связанный список гарантирует порядок элементов в наборе.
class LinkedHashSet<E> не синхронизирован.
 
Java коллекции на основе interface SortedSet<E> (Коллекция уникальных элементов. Элементы хранятся в отсортированном виде)
Java
class TreeSet<E>
TreeSet содержит неповторяющиеся коллекцию элементов.
TreeSet элементы хранятся в отсортированном виде.
TreeSet   oracle.com ...
Java
class ConcurrentSkipListSet<E>
 
Java коллекции на основе interface Map<K, V> (содержит ключи и значения. Каждый ключ связывается только с одним значением т.е. по ключу получим значение )
Java
class HashMap<K,V>
Java
class Hashtable<K,V>
Hashtable   oracle.com ...

Существует несколько различий между Hashtable и HashMap в Java:

Hashtable синхронизирован, тогда как HashMap — нет. Это делает HashMap лучше для непотоковых приложений, так как несинхронизированные объекты обычно работают лучше, чем синхронизированные.

Hashtable не допускает null ключей или значений. HashMap допускает один null ключ и любое количество нулевых значений.

Один из подклассов HashMap — LinkedHashMap, поэтому если вам нужен предсказуемый порядок итераций (который по умолчанию является порядком вставки), вы легко можете заменить хэш-карту на LinkedHashMap. Это было бы не так просто, если бы вы использовали Hashtable.

Поскольку синхронизация для вас не проблема, я бы порекомендовал HashMap. Если проблема с синхронизацией, можно также обратить внимание на ConcurrentHashMap.
Java
class LinkedHashMap<K,V>
Java
class WeakHashMap<K,V>
Java
class Properties<K,V>
Java
class Provider<K,V>
Java
class EnumMap<K,V>
Java
class IdentityHashMap<K,V>
 
Java коллекции на основе interface SortedMap<E> (содержит ключи и значения. Каждый ключ связывается только с одним значением т.е. по ключу получим значение. Ключи хранятся в отсортированном виде.)
Java
class TreeMap<K,V>
Java
class ConcurrentSkipListMap<K,V>
 
Java коллекции на основе interface ConcurrentMap<K, V> (содержит ключи и значения. Каждый ключ связывается только с одним значением т.е. по ключу получим значение. Функции в ConcurrentMap безопасны для потоков и поддерживают быстрые операции чтения и записи при нескольки потоках.)
Java
class ConcurrentHashMap<K,V>
Используется когда несколько потоков могут читать и обновлять данные одновременно, при этом карта остаётся в корректном состоянии. Это особенно удобно для хранения промежуточных или вычисленных значений, к которым часто обращаются несколько потоков.
ConcurrentHashMap   oracle.com ...
Java
class ConcurrentSkipListMap<K,V>
 
← Предыдущая тема
Модификаторы доступа (private, protected, public) для класса и для методов, полей. | Java
 
Следующая тема →
interface List<E> в Java
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

 
Скачать и установить
• Установка JDK (скачиваем и устанавливаем библиотеку Java для Windows)
• Скачать и установить IntelliJ IDEA для изучения Java, Spring, Jakarta EE | Функциональность и отличия: Community | Ultimate
• Error "JDK is missing" | Java
Java (class, interface, collections, и т.д.)
• Создание простого консольного приложения в IntelliJ IDEA для изучения Java
• Модификаторы доступа (private, protected, public) для класса и для методов, полей. | Java
• Коллекции в Java
• interface List<E> в Java
• class ArrayList<E> в Java
• class Vector<E> в Java
• class Stack<E> в Java
• class CopyOnWriteArrayList<E> в Java
• interface Queue<E> в Java
• interface Deque<E> в Java
• class LinkedList<E> в Java
• interface Set в Java
• class HashSet<E> в Java
• class LinkedHashSet<E> в Java
• Collections.singletonList("Hello") возвращает неизменяемый список, содержащий ровно один указанный элемент | Java collection
• class Collections (все функции, алгоритмы) | Java
• stream.filter(...) выбираем элементы по своему критерию | Java collection | Пример: allCars.stream().filter(item -> item.Price < 30000).toList()
• Что такое interface в Java ?
• Прямо в коде (во время выполнения) делаем имплементацию для interface | Java
• Потоки в Java
• lambda это безымянный метод (нет имени и не принадлежит классу) | Java
• Исключения и обработка в Java. Пример: try {...} catch (Exception e) {...}
• Зачем использовать throws Exception в названии функциии в Java ? Ответ: метод создает исключение и нет обработки try catch. Пример: float CalculateDensity(float mass, float volume) throws Exception { ... throw new Exception("Error! Volume is zero."); ... }
Java web приложение (сервлет, jsp страница, основная функциональность и без фрэймворков)
• Создаем новое простое web приложение (jsp web страница) | Java, Maven
• Создаем web сервлет (сервлет находится на веб-сервере, по запросу возвращает результат) | Java
• Установка Tomcat web server (скачиваем и устанавливаем для Windows)
• Проверяем, тестируем Tomcat web server (создаем новый my.hml файл)
• Что такое Maven
• Что такое динамическая web страница jsp (Java Server Page) ?
• Как инсталировать Smart Tomcat plugin в Intellij Idea
• Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java
Spring в Java (Spring Framework, Spring Data, Spring Boot, ...)
• Что такое Spring? Зачем в Java использовать Spring?
• Что такое Spring Bean? Что такое Spring Container? IoC (inversion of control) | Создание простого Spring проекта и конфигурациия Spring Container в XML файле | Редактор IntelliJ Idea и язык Java
• Что такое Dependency Injection в Spring? Создание простого Spring проекта с Dependency Injection в конструкторе с атрибутами @Component, @Autowired | Редактор IntelliJ Idea и язык Java
• Создаем новое Spring Web приложение (запрос идет в Controller → Controller создает ответ как текст или json) | Java, Spring Web, Spring Boot, Maven
• Создаем новое Spring WebSocket приложение (Java WebSocket шлет сообщение к JavaScript WebSocket) | Java, Spring WebSocket, Spring Boot, Maven
• Создаем Azure Web App с типом Java (бесплатно). То есть создаем пустой web server
• Java Spring web приложение кладем в Azure
• К приложению Azure Web App (Java) соединяемся через FTP | используем File Explorer
• Ошибка "The SDK is not specified for module ... | Project SDK is not defined ..." в IntelliJ IDEA | Java, Spring Boot
• Как инсталировать Spring WebSocket plugin в Intellij Idea
Jakarta EE / Java EE в Java (web приложения, web сервисы)
• Что такое Jakarta EE (Java EE) ? | В каком редакторе (программе) удобно писать Jakarta EE (Java EE) код?
• Создание простого web-проекта в IntelliJ Idea Ultimate | Jakarta EE (Java EE)
Struts на Java (расширяет API Java Servlet используя MVC)
• Что такое Struts | Java
Курсы, обучение
• Курс "Java-разработчик" от Yandex
Собеседование
• Собеседования на Java

  Ваши вопросы присылайте по почте: info@dir.by