如果我的ArrayList
有两个相同的对象,我在remove
中使用了ArrayList
,哪一个会被移除?
例如:
People p=new people();
ArrayList<People> peoples = new ArrayList<>();
peoples.add(p);
peoples.add(p);
peoples.remove(p);
答案 0 :(得分:2)
它将删除第一个。
请注意,它比这稍微复杂一点。在您的示例中,您已添加两次相同的实例p
。但是,如果您添加p
然后q
,并且他们在p.equals(q)
的意义上相等,那么尝试删除q
将会删除p
相反(因为它来到它之前,并且等于它)。
要删除最后一个,您需要
peoples.remove(peoples.lastIndexOf(p));
答案 1 :(得分:0)
如果您阅读Oracle documentation,则说:
Removes the first occurrence of the specified element from this list, if it is present.
要删除最后一个:
peoples.remove(peoples.lastIndexOf(p));
答案 2 :(得分:0)
如果你避免重复,那么你可以使用这种方法。
People p=new people();
ArrayList<People> peoples = new ArrayList<>();
if(!peoples.contains(p)){
peoples.add(p);
}
if(!peoples.contains(p)){
peoples.add(p);
}
在添加到列表之前,您可以使用.contains进行检查。 如果您没有在代码中创建此列表,我的意思是从其他api或您无法控制的方法中获取。然后在方法中创建new,并通过选中contains
将每个元素从第一个列表移动到列表中