我编写了一个在HashSet...here中插入数据的程序是代码
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;
}
}我没有粘贴我在这些类中做的其他两个classes.All,它们是填充数据的,其他是主类。
现在我了解到,通过Java,我了解到在Collection class.Now中有一个名为sort()的方法,我的问题是排序方法获取列表。
这是文档排序(列表列表)的签名。我面临排序问题,.Somebody告诉我将hashset转换成TreeSet(其中一个线程中也提到了堆栈溢出)...Is,这是唯一的方法。
发布于 2013-02-23 15:50:49
这是唯一的办法。HashSet 从来没有被分类过。它不对您的项目进行任何排序,以换取contains、add和remove操作的性能。
http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html
该类实现了由哈希表(实际上是HashMap实例)支持的Set接口。--它不能保证集合的迭代顺序;特别是,它不能保证随着时间的推移,顺序将保持不变--。这个类允许空元素。
所以,只需使用TreeSet,它根据类的自然排序保持排序。我看到您的类实现了Comparable,这使得它很容易在TreeSet中使用。
发布于 2015-02-16 10:36:40
使用LinkedHashSet代替,因为它以排序的方式插入元素,所以集合总是排序的。
请参阅http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html更多信息:
哈希表和链表实现的集合接口,具有可预测的迭代顺序。此实现与HashSet不同的是,它维护一个通过其所有条目运行的双链接列表。这个链表定义了迭代顺序,这是元素被插入到集合中的顺序(插入顺序)。注意,如果一个元素被重新插入到集合中,插入顺序不会受到影响。(如果调用s.add(e)时,s.contains(e)将在调用之前返回true,则将元素e重新插入到集合中。)
https://stackoverflow.com/questions/15042360
复制相似问题