我有一个SortedSet
实现的TreeSet
,我经常通过new ArrayList<>(mySortedSet)
将其转换为列表,然后执行subList(myList, 3)
或任何其他数量的元素。
如何避免在创建新列表时使用subList
,而只从ArrayList
中一次性获得所需元素的SortedSet
。结合使用Java 11和Guava。
对于您可以使用的三个最小元素
Iterator<E> it = mySortedSet.iterator();
ArrayList<E> = Lists.newArrayList(it.next(), it.next(), it.next());
这看起来很hacky,因为它取决于参数的求值顺序(在Java中是保证的)。集合较小时也会吹响。我写的时候并不是真的推荐它,但是您明白了。
但是,当您只需要这三个元素时,可以使用PriorityQueue
或番石榴的Comparators.least(int, Comparator)
。