在ArrayList中,我有相同类型的对象。每个对象都有一个id,name和number作为其字段。有可能多个对象具有相同的电话号码。如何使ArrayList以所有ArrayList对象具有不同的电话号码的方式制作?
答案 0 :(得分:1)
在您的班级方法equals()
和hashCode()
中覆盖。在等于您将通过电话号码进行比较。从您的电话号码生成哈希码。
现在您已准备好使用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<Test> arr = ArrayList<Test>()
,而是使用Set<Test> mySet = new HashSet<Test>()
。
答案 1 :(得分:0)
尝试Set.
不包含重复元素的集合。
答案 2 :(得分:0)
我想到的第一个解决方案是使用HashMap
。
只需创建一个HashMap,将'phonenumber'作为键,将对象作为值。添加所有元素后,您将拥有具有唯一电话号码的对象列表。只需对此进行迭代即可创建所需的List。