Создать список определенного размера в Java из SortedSet - PullRequest
1 голос
/ 24 октября 2019

У меня есть реализация SortedSet из TreeSet, которую я часто конвертирую в список с помощью new ArrayList<>(mySortedSet), а затем выполняю subList(myList, 3) или любое другое количество элементов.

Как можно избежать использованияsubList при создании нового списка и получение ArrayList необходимых элементов из SortedSet за один раз. Использование Java 11 с Guava.

Ответы [ 3 ]

4 голосов
/ 24 октября 2019

Использование только Java:

List<E> list = sortedSet.stream().limit(3).collect(Collectors.toList());
3 голосов
/ 24 октября 2019
ImmutableList.copyOf(Iterables.limit(sortedSet, 3));

Это должно быть все, что вам нужно - Iterables.limit выполняет важную часть.

1 голос
/ 24 октября 2019

Для трех наименьших элементов вы можете использовать

Iterator<E> it = mySortedSet.iterator();
ArrayList<E> = Lists.newArrayList(it.next(), it.next(), it.next());

Это выглядит довольно странно, поскольку зависит от порядка вычисления аргументов (что гарантировано в Java). Это также дует, когда набор меньше. Я на самом деле не рекомендую это, как я написал, но вы поняли. *

...