Java 从arraylist移除项目

Java 从arraylist移除项目,java,arraylist,Java,Arraylist,在ArrayList中,我有相同类型的对象。每个对象都有一个id、名称和编号作为其字段。有可能多个对象具有相同的电话号码。如何使ArrayList中的所有ArrayList对象都有不同的电话号码?试试看 不包含重复元素的集合 重写类中的方法equals()和hashCode()。在equals中,您将通过电话号码进行比较。从您的电话号码也生成哈希代码 现在,您可以使用Set界面,该界面将自动按电话号码比较对象并排除重复项 示例如下: public class Test { private

在ArrayList中,我有相同类型的对象。每个对象都有一个id、名称和编号作为其字段。有可能多个对象具有相同的电话号码。如何使ArrayList中的所有ArrayList对象都有不同的电话号码?

试试看


不包含重复元素的集合

重写类中的方法
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将是索引