Коллекции Eclipse предоставляет дополнительные типы коллекций, которых нет в JDK.
Структуры данных, которых вы не найдете в JDK
JDK может не иметь всех структур данных, необходимых для создания приложений Java. В части 1 этой серии блогов я расскажу о нескольких структурах данных, которые вы не найдете сегодня в JDK, но которые доступны в Коллекциях Eclipse.
Интервал
Interval
- это диапазонInteger
значений со значениямиfrom
,to
иstep
.Interval
неизменен.Interval
может быть прямым или обратным в зависимости от того, больше или меньшеfrom
значенияto
.- В Коллекциях Eclipse класс
Interval
- этоList<Integer>
, а такжеRandomAccess
. - В коллекциях Eclipse класс
Interval
также являетсяLazyIterable<Integer>
. Interval
полезен для быстрого (и эффективного) создания диапазонаInteger
значений в видеList
. ПосколькуInterval
- этоList<Integer>
, его можно использовать для проверки равенства с другимиList
экземплярами.
Сумка
Bag
- это неупорядоченныйCollection
, который допускает дублирование.Bag
похож наMap<K, Integer>
.Bag
полезен для подсчета вещей.- Метод
countBy
принимаетFunction
и возвращаетBag
. - Метод
toBag
преобразует любой тип Коллекции Eclipse вBag
.
Нихил Нанивадекар ведет отличный блог, в котором объясняется Bag
реализация в Eclipse Collections. В блоге есть сравнение памяти и производительности.
Multimap
Multimap
- это структура данных, подобнаяMap
, которая допускает несколько значений для каждого ключа.Multimap
похож наMap<K, Collection<V>>
.Multimap
полезен для группировки вещей.- Метод
groupBy
принимаетFunction
и возвращаетMultimap
.
Нихил Нанивадекар также ведет отличный блог, в котором объясняется Multimap
реализация в Eclipse Collections. В блоге также есть сравнение памяти.
ХешированиеСтратегия + Пул
HashingStrategy
- это интерфейс, который помогает реализовать определение уникальности объекта.- Разработчикам необходимо реализовать в интерфейсе два метода -
computeHashCode
иequals
. HashingStrategy
полезен для создания структур данных на основе хешей, не требуя специальных ключевых объектов для определения уникальности.Pool
- это интерфейс сput
иget
методами. Он похож наSet
в том, что он содержит уникальные значения, и похож наMap
в том, что он предоставляет методget
для поиска значений.
Сегодня в Коллекциях Eclipse доступно несколько HashingStrategy
структур данных.
UnifiedSetWithHashingStrategy
- ИMutableSet
, иPool
UnifiedMapWithHashingStrategy
— aMutableMap
HashBagWithHashingStrategy
— aMutableBag
Object<Primitive>HashMapWithHashingStrategy
- Доступно для всех типов примитивов.
BiMap
BiMap
разрешает поиск по ключу или значению.- И ключи, и значения должны быть уникальными.
- Поиск значения доступен по вызову
inverse
.
Но подождите, есть еще кое-что ...
Это лишь некоторые из структур данных, которых вы сегодня не найдете в JDK. В части 2 и части 3 этой серии блогов я расскажу о MultiReader
коллекциях и примитивных коллекциях.
Я руководитель проекта и ответственный за проект OSS Коллекции Eclipse в Eclipse Foundation. Eclipse Collections открыта для пожертвований. Если вам нравится библиотека, вы можете сообщить нам об этом, отметив ее на GitHub.
Другие статьи по программированию на Java, которые могут вам понравиться:
10 вещей, которые должен изучить Java-программист
10 языков программирования, которые можно изучить
10 инструментов, которые должен изучить каждый Java-разработчик. Знайте
10 причин изучать языки программирования Java в 2021 году
Полная дорожная карта для разработчиков Java
Мои любимые бесплатные курсы программирования для начинающих
10 бесплатных Курсы по структуре данных и алгоритмам
7 лучших курсов по структуре данных и алгоритмам для начинающих
50+ вопросов для интервью по структуре данных и алгоритмам