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

joh*_*ann 9 java collections clone list

我想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);
Run Code Online (Sandbox Code Playgroud)

我想知道一种方法是否magicMethodForClone存在.

谢谢

Are*_*rff 29

List.subList(0, 20) 如果列表包含少于20个元素,则会抛出异常.

使用Java 8:

您可以使用Stream.limit():

List<Staff> second = staffs.stream().limit(20).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

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

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

List<Staff> second = Lists.newArrayList(Iterables.limit(staffs, 20));
Run Code Online (Sandbox Code Playgroud)


Bri*_*ham 15

List<Staff> second = new ArrayList<Staff>(staffs.subList(0, 20));
Run Code Online (Sandbox Code Playgroud)