是将UserAndSum对象从一个List复制到另一个List的最佳方法。
编辑: 我有一个包含很多用户的OBJ用户列表,我想要一个只有前25位用户的新用户
List <UserAndSum> list= new ArrayList<UserAndSum>();
list.add(new UserAndSum(john, 55));
list.add(new UserAndSum(tom, 88));
list.add(new UserAndSum(brian, 99));
....
List <UserAndSum> list25 = new ArrayList<UserAndSum>();
???? ADD ONLY 25 UserAndSum????
答案 0 :(得分:4)
如果您希望放置list25
来自list
的前25个元素(不会明确创建UserAndSum
的副本),那么您只需编写
List <UserAndSum> list25 = list.subList(0, Math.min(25, list.size()));
我添加Math.min(25, list.size())
以防万一列表中的元素数少于25。
您可以使用Java 8及其stream()
创建更清晰的代码。
List <UserAndSum> list25 = list.stream().limit(25).collect(Collectors.toList());
两种解决方案都会产生相同的结果,但limit(25)
IMO描述的要比Math.min(25, list.size())
更容易实现。