从 SortedSet 创建 Java 中特定大小的列表

Create list of certain size in Java from SortedSet

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

如何避免在创建新列表时使用 subList 并一次只从 SortedSet 中获取所需元素的 ArrayList。 将 Java 11 与番石榴一起使用。

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

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

这看起来很老套,因为它取决于参数的评估顺序(在 Java 中得到保证)。当集合较小时它也会吹。我写的时候并不是真的推荐它,但你明白了。

然而,当你只需要这三个元素时,你可以使用PriorityQueue或Guava的Comparators.least(int, Comparator)

ImmutableList.copyOf(Iterables.limit(sortedSet, 3));

这应该是您所需要的——Iterables.limit 完成了重要的部分。

仅使用 Java:

List<E> list = sortedSet.stream().limit(3).collect(Collectors.toList());