Коллекции 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 структур данных.

  1. UnifiedSetWithHashingStrategy - И MutableSet, и Pool
  2. UnifiedMapWithHashingStrategy — a MutableMap
  3. HashBagWithHashingStrategy — a MutableBag
  4. 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+ вопросов для интервью по структуре данных и алгоритмам