Java如何给数组中的元素一个唯一的ID

Java如何给数组中的元素一个唯一的ID,java,arrays,Java,Arrays,我是编程新手,我的任务是制作一个swing/GUI crud,您可以将人/动物/电影放入数组等(我目前正在制作人),它将生成邮件、用户名等。我已经完成了所有这些,但我缺少一件事 现在-我想给数组中的每个元素一个唯一的ID,比如说,如果一个人有ID 25,那么就不可能有另一个元素具有相同的ID 25,除非我删除那个特定的元素 我使用了一个Jframe,然后是一个java公共类,其中我的Jframe有get和set 抱歉,我是新来的-谢谢。Java.lang.Object有名为hasCode()和e

我是编程新手,我的任务是制作一个swing/GUI crud,您可以将人/动物/电影放入数组等(我目前正在制作人),它将生成邮件、用户名等。我已经完成了所有这些,但我缺少一件事

现在-我想给数组中的每个元素一个唯一的ID,比如说,如果一个人有ID 25,那么就不可能有另一个元素具有相同的ID 25,除非我删除那个特定的元素

我使用了一个Jframe,然后是一个java公共类,其中我的Jframe有get和set

抱歉,我是新来的-谢谢。

Java.lang.Object有名为
hasCode()
equals()的方法。这些方法在实时应用中发挥着重要作用。但是,并非所有应用程序都使用它

hashCode()

正如您所知,此方法提供对象的has代码。基本上,
Object
提供的
hashCode()
的默认实现是通过将内存地址映射到一个整数值来派生的。如果查看
对象
类的源代码,您将找到
hashCode
的以下代码。公共本机int
hashCode()
;它表明
hashCode
是本地实现,它在一定程度上提供了内存地址。但是,可以重写实现类中的
hashCode
方法

等于()

这种特殊的方法用于在两个对象之间进行相等的比较。
Java
中有两种类型的比较。一个是使用
“==”
运算符,另一个是
“equals()”
。我希望你知道这两者的区别。更具体地说,
“.equals()”
指的是等价关系。所以从广义上说,两个对象是等价的,它们满足
“equals()”
条件。如果查看对象类的源代码,您将发现
equals()
方法的以下代码

因此,让我们创建一个类
Person
覆盖这些方法:

public class Person {

    private Integer personId;
    private String fullName;

    public Integer getPersonId() {
        return personId;
    }

    public void setPersonId(Integer personId) {
        this.personId = personId;
    }

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    @Override
    public String toString() {
        return "Person [personId=" + personId + ", fullName=" 
                        + fullName + "]";
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((fullName == null) ? 0 : fullName.hashCode());
        result = prime * result + ((personId == null) ? 0 : personId.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (fullName == null) {
            if (other.fullName != null)
                return false;
        } else if (!fullName.equals(other.fullName))
            return false;
        if (personId == null) {
            if (other.personId != null)
                return false;
        } else if (!personId.equals(other.personId))
            return false;
        return true;
    }

}
现在,我们的主要类用于创建和管理类Person的重复对象:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class UniqueArrayExample {

    //To remove duplicates objects we use here HashSet util collection
    private static Set<Person> personSet = new HashSet<Person>();

    public static void main(String[] args) {

        //creating four objects of Person Class
        Person person1 = new Person();
        Person person2 = new Person();
        Person person3Dupl = new Person();
        Person person4 = new Person();

        //third object person3Dup1 is duplicate of Object person1
        person1.setPersonId(12341);
        person2.setPersonId(12342);
        person3Dupl.setPersonId(12341);
        person4.setPersonId(12344);

        person1.setFullName("Suresh Kumar");
        person2.setFullName("Mahesh Singh");
        person3Dupl.setFullName("Suresh Kumar");
        person4.setFullName("Rajkumar Singh");

        //Add those Person class Object to Set<Person> collection
        personSet.add(person1);
        personSet.add(person2);
        personSet.add(person3Dupl);
        personSet.add(person4);

        //So here after getting all Objects to Iterator and by 
        //printing those will not give you the person1 Object duplicate.
        Iterator<Person> iterator = personSet.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next().toString());
        }
    }

}
如果从类
Person
中删除这些方法,则可以使用
HashSet
删除重复对象,因为在类
Person
中重写
hashCode()
equals()
方法,
Set
collection将添加
Person
的所有
对象
,并删除冗余


希望这能对您有所帮助。

他们已经有了唯一的id。只需使用数组中的索引即可。再也找不到比这更独特的了。
Person [personId=12342, fullName=Mahesh Singh]
Person [personId=12341, fullName=Suresh Kumar]
Person [personId=12344, fullName=Rajkumar Singh]