Рубрики
Без рубрики

Коллекции Eclipse теперь поддерживают тройки

Недавно я внес свой вклад в Eclipse Collections framework, внедрив новый тип данных под названием… С тегами java, show dev, новости, eclipsecollections.

Недавно я внес свой вклад в фреймворк Eclipse Collections , внедрив новый тип данных под названием Triple. Это будет частью выпуска 10.3.0

Что такое Тройной

Тройка – это реализация кортежа, который может содержать 3 произвольных значения. Кортежи и, следовательно, Тройка также являются неизменяемыми конечными коллекциями с единственной целью группировки данных вместе. Кортежи являются хорошо известными и широко используемыми типами данных в информатике и изначально реализованы на многих языках Haskell, Erlang и Smalltalk, а также на Python и C#. Единственная вещь в Java, которая выглядит как реализация кортежа, – это Map. Запись .

Кортеж в его чистом виде не обязан содержать только 2 элемента, более известный как 2-кортеж. В коллекциях Eclipse уже существовала реализация из 2 кортежей, называемая Pair. Это может содержать ровно 2 элемента, сгруппированных вместе. В языках, упомянутых выше, вы можете создавать кортежи, содержащие 3,4,5 или даже больше элементов. Оказалось, что использование кортежа, содержащего более 3 элементов, используется редко. Однако 2 пункта в некоторых случаях просто недостаточно. Отсюда и тройная реализация для коллекций Eclipse

Как это работает

Тройка может содержать 3 различных типа объектов, сгруппированных вместе. Если вы хотите хранить 3 объекта одного и того же типа, существует аналогичный тип, называемый Triplet, где тип всех трех элементов одинаков.

В следующем примере я группирую название страны с ее международным телефонным кодом и если они являются членами ЕС (Европейского союза). Эффективно я объединяю 3 типа: Строка , int и логическое значение .

Tuples.triple("Netherlands",  31, true);
Tuples.triple("United Kingdom",  44, false);
Tuples.triple("Germany", 49, true);

Чтобы получить значения из тройки, вы можете использовать get One() , get Two() и get Three() для получения соответствующих значений. Допустим, у меня есть список европейских стран, и я хочу напечатать только названия стран, являющихся членами ЕС. Используя тройку для реализации этого с коллекциями Eclipse, код будет выглядеть следующим образом.

var countries = Lists.immutable.of(
       Tuples.triple("Netherlands", 31, true),
       Tuples.triple("United Kingdom", 44, false),
       Tuples.triple("Germany", 49, true)
);

var euCountries = countries
       .select(Triple::getThree)
       .collect(Triple::getOne);

euCountries.forEach(System.out::println);

Примечание. В этом примере я использую Java 11, а тип стран – ImmutableTripletonList

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

Конечно, есть множество других способов добиться того же результата. Просто подумайте о тройном другом инструменте в наборе инструментов, который вы можете использовать, если хотите. Что еще более важно, программисты имеют разный опыт работы, и предоставление им инструментов, с которыми они предпочитают работать, таких как многозначные кортежи, делает Java более доступной. Даже если вы не можете работать с последней версией Java.

Демо-код доступен на Github

Оригинал: “https://dev.to/brianverm/eclipse-collections-now-supports-triples-dkl”