[英]Create list of certain size in Java from SortedSet
我有一個TreeSet
實現的SortedSet
,我經常通過new ArrayList<>(mySortedSet)
將其轉換為列表,然后執行subList(myList, 3)
或任何其他數量的元素。
如何避免在創建新列表時使用subList
,並且僅在一個 go 中從SortedSet
中獲取所需元素的ArrayList
。 將 Java 11 與番石榴一起使用。
ImmutableList.copyOf(Iterables.limit(sortedSet, 3));
這應該就是你所需要的—— Iterables.limit
是重要的部分。
對於您可以使用的三個最小元素
Iterator<E> it = mySortedSet.iterator();
ArrayList<E> = Lists.newArrayList(it.next(), it.next(), it.next());
這看起來很 hacky,因為它取決於 arguments 的評估順序(在 Java 中得到保證)。 當集合更小時它也會吹。 我並不是真的在寫它時推薦它,但你明白了。
但是,當您只需要這三個元素時,您可以使用PriorityQueue
或 Guava 的Comparators.least(int, Comparator)
。
僅使用 Java:
List<E> list = sortedSet.stream().limit(3).collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.