复制具有条目限制的Java列表

时间:2012-01-16 05:17:30

标签: java list collections clone

我想从简单的List<Object>创建一个新的List<Object>,仅限20个条目。

//my first array
List<Staff> staffs = new ArrayList<Staff>();

staffs.add(new Staff(...));
staffs.add(new Staff(...));
staffs.add(new Staff(...));
staffs.add(new Staff(...));


List<Staff> second = magicMethodForClone(staffs,20);

我想知道magicMethodForClone之类的方法是否存在。

谢谢

2 个答案:

答案 0 :(得分:27)

如果您的列表包含少于20个元素,

List.subList(0, 20)将抛出异常。

使用Java 8:

您可以使用Stream.limit()

List<Staff> second = staffs.stream().limit(20).collect(Collectors.toList());

使用Java 7或更低版​​本:

您可以使用Guava的Iterables.limit()获取所有可用元素但不超过20个:

List<Staff> second = Lists.newArrayList(Iterables.limit(staffs, 20));

答案 1 :(得分:15)

List<Staff> second = new ArrayList<Staff>(staffs.subList(0, 20));