Sortierung HashSet
Ich habe ein Programm geschrieben zum einfügen von Daten in ein HashSet...hier ist der code
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;
}
}
Habe ich nicht eingefügt beiden anderen Klassen.Alles was ich Tue in diesen Klassen ist das Auffüllen der Daten und die andere ist die main-Klasse.
Jetzt verstehe ich, dass durch die Java-Doc-Api kam ich zu wissen, dass es Methode namens sort() im Collections-Klasse.Jetzt das Problem, das ich bin, ist, dass die Art mathod dauert in der Liste.
hier ist die Unterschrift vom doc sort(Liste, Liste). Ich bin vor problem zu Sortieren, meine hashset .Jemand sagte mir, zu konvertieren HashSet in TreeSet(Das ist auch schon in einem der stackoverflow-thread)...Ist das der einzige Weg
- Warum nicht loswerden
HashSet
und verwenden nurTreeSet
von Anfang an?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So ziemlich der einzige Weg.
HashSet
es war nie vorgesehen, sortiert werden. Es hält nicht jede Bestellung Ihrer Elemente, im Austausch für Leistungcontains
,add
undremove
Operationen.http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html
Also, nutzen Sie einfach
TreeSet
hält, die Sortierung nach Ihrer Klasse " natural bestellen. Ich sehe deine Klasse implementiertComparable
das macht es leicht verwendet werdenTreeSet
Verwenden
LinkedHashSet
statt, wie Es das einfügen von Elementen in eine sortierte Art und Weise, so dass der Satz ist immer sortiert.Sehen http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html weitere Informationen: