Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序哈希集_Java_Sorting - Fatal编程技术网

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的问题……我可以加入相同的线程吗?