Блог о менее известном методе Eclipse Collections

Во что я сейчас ввязываюсь?

В Eclipse Collections есть метод с именем into, который был добавлен в выпуске 8.0. Подпись into определяется в интерфейсе RichIterable следующим образом.

Этот метод можно использовать для передачи содержимого любого RichIterable «в» целевую коллекцию. Следующие примеры представляют собой коллекции, которые «неизвестны» как методы конвертера Eclipse Collections, но могут прекрасно использоваться с into.

@Test
public void intoTheUnknown()
{
    var integers = Interval.oneTo(10);

    var into1 = integers.into(new CopyOnWriteArrayList<>());
    Assertions.assertEquals(integers, into1);

    var into2 = integers.into(new CopyOnWriteArraySet<>());
    Assertions.assertEquals(integers.toSet(), into2);

    var into3 = integers.into(new ArrayDeque<>());
    Assertions.assertEquals(integers.toBag(), 
            Bags.mutable.withAll(into3));

    var into4 = integers.into(new LinkedList<>());
    Assertions.assertEquals(integers, into4);

    var into5 = integers.into(new Stack<>());
    Assertions.assertEquals(integers, into5);

    var checkedList = 
        Collections.checkedList(new ArrayList<>(), Integer.class);
    var into6 = integers.into(checkedList);
    Assertions.assertEquals(integers, into6);

    var checkedSet = 
        Collections.checkedSet(new HashSet<>(), Integer.class);
    var into7 = integers.into(checkedSet);
    Assertions.assertEquals(integers.toSet(), into7);
}

Метод into также полезен, когда вы хотите слить несколько исходных коллекций в одну и ту же целевую коллекцию.

@Test
public void intoList()
{
    var target = Interval.oneTo(3).into(new ArrayList<>());
    Interval.fromTo(4,6).into(target);
    Interval.fromTo(7,10).into(target);
    Assertions.assertEquals(Interval.oneTo(10), target);
}

Вот и все. Это блог. Надеюсь, вам понравился этот короткий технический блог Java w / Eclipse Collections.

Я руководитель проекта и ответственный за проект OSS Коллекции Eclipse в Eclipse Foundation. Eclipse Collections открыта для пожертвований. Если вам нравится библиотека, вы можете сообщить нам об этом, отметив ее на GitHub.