通过SortedSet在Java中创建特定大小的列表

问题描述 投票:0回答:1

我有一个SortedSet实现的TreeSet,我经常通过new ArrayList<>(mySortedSet)将其转换为列表,然后执行subList(myList, 3)或任何其他数量的元素。

如何避免在创建新列表时使用subList,而只从ArrayList中一次性获得所需元素的SortedSet。结合使用Java 11和Guava。

java performance collections guava
1个回答
0
投票

对于您可以使用的三个最小元素

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

这看起来很hacky,因为它取决于参数的求值顺序(在Java中是保证的)。集合较小时也会吹响。我写的时候并不是真的推荐它,但是您明白了。

但是,当您只需要这三个元素时,可以使用PriorityQueue或番石榴的Comparators.least(int, Comparator)

© www.soinside.com 2019 - 2024. All rights reserved.