Java 如何使用迭代器复制列表
如果我有一个列表,并且我希望有一个返回列表而不暴露实际列表本身的方法,那么最好的方法是什么Java 如何使用迭代器复制列表,java,list,arraylist,iterator,Java,List,Arraylist,Iterator,如果我有一个列表,并且我希望有一个返回列表而不暴露实际列表本身的方法,那么最好的方法是什么 public class open { private List<Open> users; public open() { this.users = new ArrayList<Open>(); } public List<Open> getUsers() { //return a copy of the l
public class open {
private List<Open> users;
public open() {
this.users = new ArrayList<Open>();
}
public List<Open> getUsers() {
//return a copy of the list}
公共类打开{
私人名单用户;
公开赛{
this.users=new ArrayList();
}
公共列表getUsers(){
//返回列表的副本}
所以基本上我需要一份列表的副本…我猜使用迭代器可能是一种方法,但是有没有更有效的方法呢?不需要创建列表的副本。您可以返回一个不可修改的列表视图
有很多选择 您可以使用复制构造函数:
return new ArrayList<>(users);
由于这是一个视图,返回方法是O(1)
,而不是O(n)
,因此效率更高。它处理的是确保您不能修改列表
,既不能通过添加
和删除
等,也不能通过例如迭代器.remove
return new ArrayList<>(users);
return Collections.unmodifiableList(users);