Java 从arraylist移除项目
在ArrayList中,我有相同类型的对象。每个对象都有一个id、名称和编号作为其字段。有可能多个对象具有相同的电话号码。如何使ArrayList中的所有ArrayList对象都有不同的电话号码?试试看Java 从arraylist移除项目,java,arraylist,Java,Arraylist,在ArrayList中,我有相同类型的对象。每个对象都有一个id、名称和编号作为其字段。有可能多个对象具有相同的电话号码。如何使ArrayList中的所有ArrayList对象都有不同的电话号码?试试看 不包含重复元素的集合 重写类中的方法equals()和hashCode()。在equals中,您将通过电话号码进行比较。从您的电话号码也生成哈希代码 现在,您可以使用Set界面,该界面将自动按电话号码比较对象并排除重复项 示例如下: public class Test { private
不包含重复元素的集合 重写类中的方法
equals()
和hashCode()
。在equals中,您将通过电话号码进行比较。从您的电话号码也生成哈希代码
现在,您可以使用Set
界面,该界面将自动按电话号码比较对象并排除重复项
示例如下:
public class Test {
private int id;
private String name;
private String phoneNumber;
public Test(int id, String name, String phoneNumber) {
this.id = id;
this.name = name;
this.phoneNumber = phoneNumber;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Test test = (Test) o;
return phoneNumber.equals(test.phoneNumber);
}
@Override
public int hashCode() {
return phoneNumber.hashCode();
}
}
现在,不要使用
List arr=ArrayList()
,而是使用Set mySet=new HashSet()
我想到的第一个解决方案是使用HashMap
只需创建一个HashMap,其中“phonenumber”作为键,对象作为值。添加所有元素后,您将拥有具有唯一电话号码的对象列表。只需重复此操作即可创建所需的列表。假设您拥有相同电话号码的
objA
和objB
objA
被添加到ArrayList
,然后objB
“想要”也被添加到ArrayList
。使用objB
会发生什么?它只是不被“接受”(补充)?只是好奇而已。但是在数组列表中会有两个具有相同电话号码的对象。我想这不是你所期望的。在某些情况下,我需要这两个对象。hashCode()
只在HashSet
的情况下才有用,否则我觉得equals()
应该足够使用arraylist.contain(“number”)区分objects@jay这行不通,因为ArrayList
中的对象是对象,不仅仅是数字。我知道,但您可以这样使用:if(!list.get(0).containsValue(number));其中,将对象添加到arraylist时,0将是索引