我编写了一个程序来在HashSet中插入数据......这里是代码
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我还没有粘贴其他两个类.我在这些类中所做的就是填充数据而其他类是主类.
现在我明白了,通过Java Doc Api我知道在Collections类中有一个名为sort()的方法.现在我的问题就是那个排序mathod的列表.
这是来自doc sort(列表列表)的签名.我现在面临的问题进行梳理我的HashSet .Somebody告诉我HashSet的转换为TreeSet的(那也是在线程的一个提到的是计算器)......这是唯一的途径
几乎是唯一的方式.HashSet从来没有打算排序.它不会让你的项目的任何排序,换来的性能contains,add和remove操作.
http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html
此类实现Set接口,由哈希表(实际上是HashMap实例)支持.它不能保证集合的迭代顺序; 特别是,它不保证订单会随着时间的推移保持不变.该类允许null元素.
因此,只需使用TreeSet它根据您的类的自然顺序保持排序.我看到你的类实现了Comparable它可以很容易地用在一个TreeSet