是否有一个单行(可能来自Guava或Apache Collections)从集合中获取子列表。在内部,它应该执行以下操作:

public <T> List<T> sublist(Set<T> set, int count) {
  Iterator<T> iterator = set.iterator();
  List<T> sublist = new LinkedList<T>();
  int pos = 0;
  while (iterator.hasNext() && pos++ < count) {
    sublist.add(iterator.next());
  }
  return sublist;
}

显然,如果没有足够的元素,则必须返回尽可能多的元素。

最佳答案

用 Guava :

return FluentIterable.from(set)
  .limit(count)
  .toImmutableList();

(此外,与大多数其他解决方案相比,这实际上不会在整个集合上进行迭代-实际上,它将仅对第一个count元素进行迭代,然后停止。)

10-07 13:18
查看更多