Скопируйте список Java с лимитом записей - PullRequest
8 голосов
/ 16 января 2012

Я хотел бы создать новый 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 ]

28 голосов
/ 17 января 2012

List.subList(0, 20) вызовет исключение, если ваш список содержит менее 20 элементов.

С Java 8:

Вы можете использовать Stream.limit() :

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

В Java 7 или ниже:

Вы можете использовать Guava's Iterables.limit () , чтобы получитьвсе доступные элементы, но не более 20:

List<Staff> second = Lists.newArrayList(Iterables.limit(staffs, 20));
15 голосов
/ 16 января 2012
List<Staff> second = new ArrayList<Staff>(staffs.subList(0, 20));
...