从 SortedSet 创建 Java 中特定大小的列表
Create list of certain size in Java from SortedSet
我有一个 SortedSet
的 TreeSet
实现,我经常通过 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());
我有一个 SortedSet
的 TreeSet
实现,我经常通过 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());