Java如何给数组中的元素一个唯一的ID
我是编程新手,我的任务是制作一个swing/GUI crud,您可以将人/动物/电影放入数组等(我目前正在制作人),它将生成邮件、用户名等。我已经完成了所有这些,但我缺少一件事 现在-我想给数组中的每个元素一个唯一的ID,比如说,如果一个人有ID 25,那么就不可能有另一个元素具有相同的ID 25,除非我删除那个特定的元素 我使用了一个Jframe,然后是一个java公共类,其中我的Jframe有get和set 抱歉,我是新来的-谢谢。Java.lang.Object有名为Java如何给数组中的元素一个唯一的ID,java,arrays,Java,Arrays,我是编程新手,我的任务是制作一个swing/GUI crud,您可以将人/动物/电影放入数组等(我目前正在制作人),它将生成邮件、用户名等。我已经完成了所有这些,但我缺少一件事 现在-我想给数组中的每个元素一个唯一的ID,比如说,如果一个人有ID 25,那么就不可能有另一个元素具有相同的ID 25,除非我删除那个特定的元素 我使用了一个Jframe,然后是一个java公共类,其中我的Jframe有get和set 抱歉,我是新来的-谢谢。Java.lang.Object有名为hasCode()和e
hasCode()
和equals()的方法。这些方法在实时应用中发挥着重要作用。但是,并非所有应用程序都使用它
hashCode()
正如您所知,此方法提供对象的has代码。基本上,Object
提供的hashCode()
的默认实现是通过将内存地址映射到一个整数值来派生的。如果查看对象
类的源代码,您将找到hashCode
的以下代码。公共本机inthashCode()
;它表明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]