对HashSet进行排序

Dee*_*rma 2 java sorting

我编写了一个程序来在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的(那也是在线程的一个提到的是计算器)......这是唯一的途径

lui*_*s90 9

几乎是唯一的方式.HashSet从来没有打算排序.它不会让你的项目的任何排序,换来的性能contains,addremove操作.

http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html

此类实现Set接口,由哈希表(实际上是HashMap实例)支持.它不能保证集合的迭代顺序; 特别是,它不保证订单会随着时间的推移保持不变.该类允许null元素.

因此,只需使用TreeSet它根据您的类的自然顺序保持排序.我看到你的类实现了Comparable它可以很容易地用在一个TreeSet

  • 不.问一个新问题. (8认同)