Java 排序哈希集
我已经编写了一个程序来在哈希集中插入数据…下面是代码Java 排序哈希集,java,sorting,Java,Sorting,我已经编写了一个程序来在哈希集中插入数据…下面是代码 public class Person implements Comparable<Person> { private int person_id; private String person_name; public Person(int person_id,String person_name) { this.person_id=person_id; this.p
public class Person implements Comparable<Person>
{
private int person_id;
private String person_name;
public Person(int person_id,String person_name)
{
this.person_id=person_id;
this.person_name=person_name;
}
/* getter and setter method */
public boolean equals(Object obj)
{
Person p=(Person)obj;
if(!(p instanceof Person))
{
return false;
}
else if(this.person_id==p.person_id)
return true;
else
return false;
}
@Override
public int hashCode()
{
return person_id*6;
}
@Override
public int compareTo(Person o)
{
if(this.person_id>o.person_id)
return 1 ;
else if(this.person_id<o.person_id)
return -1;
else return 0;
}
}
公共类人员实现可比较
{
个人识别码;
私有字符串人名;
公众人物(int Person\u id,字符串Person\u name)
{
this.person\u id=person\u id;
this.person\u name=person\u name;
}
/*getter和setter方法*/
公共布尔等于(对象obj)
{
人员p=(人员)obj;
如果(!(个人实例))
{
返回false;
}
else if(this.person\u id==p.person\u id)
返回true;
其他的
返回false;
}
@凌驾
公共int hashCode()
{
返回人身份证*6;
}
@凌驾
公共内部比较(o人)
{
如果(此.人员id>o.人员id)
返回1;
else if(this.person\u id几乎是唯一的方法。HashSet
从来就不应该被排序。它不会保留项目的任何顺序,以换取执行包含、添加和删除操作
此类实现集合接口,由哈希表(实际上是一个HashMap实例)支持。它不保证集合的迭代顺序;特别是,它不保证顺序随时间保持不变。。此类允许空元素
因此,只需使用TreeSet
,它根据类的自然顺序保持排序。我看到类实现了Comparable
,这使得它可以很容易地用于TreeSet
使用LinkedHashSet
,因为它以排序方式插入元素,所以集合总是被排序的。
请参阅更多信息:
集合接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashSet的不同之处在于,它维护一个贯穿其所有条目的双链表。此链表定义迭代顺序,即元素插入集合的顺序(插入顺序)。请注意,如果元素重新插入到集合中,则插入顺序不受影响。(如果在调用前s.contains(e)立即返回true时调用s.add(e),则元素e将重新插入集合s。)
为什么不从一开始就使用TreeSet
来摆脱HashSet呢?我想问更多关于map的问题……我可以加入相同的线程吗?