Перейти к основному содержимому

169 записей с тегом "Java Коллекции"

Посмотреть все теги

· 11 мин. чтения

1. Обзор

Hashtable — старейшая реализация структуры данных хеш-таблицы в Java. HashMap это вторая реализация, представленная в JDK 1.2.

Оба класса предоставляют схожие функции, но есть и небольшие различия, которые мы рассмотрим в этом руководстве.

2. Когда использовать Hashtable

Допустим, у нас есть словарь, где каждое слово имеет свое определение. Также нам нужно быстро получать, вставлять и удалять слова из словаря.

· 4 мин. чтения

1. Введение

Итератор — это один из многих способов обхода коллекции, и, как и у каждого варианта, у него есть свои плюсы и минусы.

Впервые он был представлен в Java 1.2 как замена Enumerations и:

В этом уроке мы рассмотрим простой интерфейс Iterator , чтобы узнать, как мы можем использовать его различные методы.

Мы также проверим более надежное расширение ListIterator , которое добавляет некоторые интересные функции.

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы обсудим распространенное исключение , которое может возникнуть при работе с некоторыми API большинства реализаций спискаUnsupportedOperationException .

java.util.List обладает большей функциональностью, чем может поддерживать обычный массив . Например, с помощью только одного вызова встроенного метода можно проверить, находится ли конкретный элемент внутри структуры. Обычно поэтому нам иногда нужно преобразовать массив в List или Collection .

Для ознакомления с основной реализацией Java ListArrayList — обратитесь к этой статье .

2. Исключение UnsupportedOperationException

· 2 мин. чтения

1. Введение

В этой короткой статье мы сосредоточимся на распространенной проблеме тестирования, если два экземпляра List содержат одни и те же элементы в точно таком же порядке.

Список — это упорядоченная структура данных, поэтому порядок элементов имеет значение по дизайну.

взгляните на отрывок из документации List#equals Java:

… два списка считаются равными, если они содержат одни и те же элементы в одном и том же порядке.

Это определение гарантирует правильную работу метода equals в различных реализациях интерфейса List.

· 5 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим структуру данных CircularFifoQueue , представленную в пакете collections4.queue библиотеки Apache Commons Collections .

CircularFifoQueue<E> реализует интерфейс Queue<E> и представляет собой неблокирующую очередь фиксированного размеракогда вы добавляете элемент в заполненную очередь, самый старый элемент удаляется, чтобы освободить место для нового элемента . ** **

2. Зависимость от Maven

· 3 мин. чтения

1. Обзор

В этой быстрой статье мы рассмотрим CopyOnWriteArrayList из пакета java.util.concurrent .

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

2. API CopyOnWriteArrayList

В дизайне CopyOnWriteArrayList используется интересный метод, позволяющий сделать его потокобезопасным без необходимости синхронизации. Когда мы используем любой из методов модификации, таких как add() или remove() , все содержимое CopyOnWriteArrayList копируется в новую внутреннюю копию.

· 5 мин. чтения

1. Обзор

В этой статье мы рассмотрим конструкцию DelayQueue из пакета java.util.concurrent . Это блокирующая очередь, которую можно использовать в программах производитель-потребитель.

У него есть очень полезная характеристика — когда потребитель хочет взять элемент из очереди, он может взять его только тогда, когда истечет задержка для этого конкретного элемента.

2. Реализация Delayed для элементов в DelayQueue

Каждый элемент, который мы хотим поместить в DelayQueue , должен реализовать интерфейс Delayed . Допустим, мы хотим создать класс DelayObject . Экземпляры этого класса будут помещены в DelayQueue.

· 3 мин. чтения

1. Введение

LinkedList — это двусвязный список, реализующий интерфейсы List и Deque . Он реализует все необязательные операции со списками и разрешает все элементы (включая null ).

2. Особенности

Ниже вы можете найти наиболее важные свойства LinkedList :

  • Операции, индексирующие список, будут проходить по списку с начала или с конца, в зависимости от того, что ближе к указанному индексу.
  • Это не синхронизировано
  • Его итераторы Iterator и ListIterator являются отказоустойчивыми (это означает, что после создания итератора, если список будет изменен, будет выдано исключение ConcurrentModificationException )
  • Каждый элемент представляет собой узел, который хранит ссылку на следующий и предыдущий элементы.
  • Он поддерживает порядок вставки

· 4 мин. чтения

1. Введение

В этой статье мы сосредоточимся на классе PriorityBlockingQueue и рассмотрим несколько практических примеров.

Исходя из предположения, что мы уже знаем, что такое очередь , мы сначала продемонстрируем , как элементы в PriorityBlockingQueue упорядочены по приоритету .

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

Наконец, мы покажем, как совместное использование этих двух функций может быть полезным при обработке данных в нескольких потоках.

2. Приоритет элементов

· 4 мин. чтения

1. Обзор

В этой статье мы рассмотрим WeakHashMap из пакета java.util .

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

Проще говоря, WeakHashMap — это основанная на хеш-таблицах реализация интерфейса Map с ключами типа WeakReference .

Запись в WeakHashMap будет автоматически удалена, когда ее ключ больше не используется в обычном режиме, а это означает, что нет ни одной ссылки , указывающей на этот ключ. Когда процесс сборки мусора (GC) отбрасывает ключ, его запись фактически удаляется из карты, поэтому этот класс ведет себя несколько иначе, чем другие реализации Map .

2. Сильные, мягкие и слабые ссылки