java.lang.Classcastexception-Fehler: java.util.HashMap kann nicht gewirkt werden, um java.lang.Vergleichbar
Ich versuchte, mich zu Sortieren, meine ArrayList.
java.util.ArrayList arList= new java.util.ArrayList();
arList=getList();
java.util.Collections.sort(arList);
wo meine getList () - Funktion hier
public ArrayList getList() throws Exception
{
ArrayList listItems = new ArrayList();
//Query executing here..............!
while (rs.next())
{
HashMap hashList = new HashMap();
hashList.put("name",rs.getString(1));
hashList.put("id",rs.getBigDecimal(2));
listItems.add(hashList);
}
return listItems;
}
Aber ich bin mit Fehler :java.lang.Classcastexception-Fehler: java.util.HashMap kann nicht gewirkt werden, um java.lang.Vergleichbar
Wie genau versuchen Sie zu Sortieren, die
Warum sind Sie mit
ArrayList
? Ihre Liste enthält eine Reihe von HashMaps
. Versuchen Sie zu Sortieren, basierend auf dem Schlüssel von der Karte oder der Wert der Karte?Warum sind Sie mit
HashMap
s hier? Sollten Sie erstellen eine ordnungsgemäße Objekt-Klasse zu halten, die Namen und IDs.
InformationsquelleAutor NaaN | 2012-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, Was -
Erstellen Sie die erste Instanz unnötig.
Zweite Sache -
Diese Liste enthält Liste HashMap Und HashMap nicht implementiert Vergleichbar.
Liste enthalten(
T
) muss erweitert Vergleichbar.deshalb ist es Auffüllen
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.Comparable
InformationsquelleAutor Subhrajyoti Majumder
Um
Collections.sort()
, Listen (und arrays) von Objekten, die dieses interface implementieren Vergleichbar. http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.htmlInformationsquelleAutor swemon
Überprüfen Sie diese link
Diesem sollte sagen alles.
InformationsquelleAutor Anuj Balan
Collections.sort(List<T>)
benötigt ein ObjektT
TypComparable
. Das bedeutet, dass alle Objekte, die Vergleichbar Schnittstelle funktioniert. Finden Sie [hier](http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#sort%28java.util.List%29):
In Ihrem Fall, dass Sie versuchen, zu Sortieren, eine
ArrayList
enthält eineHashMap
, die nicht implementiertComparable
- Schnittstelle. So. der code schlägt fehl.InformationsquelleAutor Nishant
HashMap implementiert nicht die Vergleichbare Schnittstelle (http://docs.oracle.com/javase/6/docs/api/). Soweit ich weiß, die Sammlungen.sort()-Methode kann nur eine Art natürlichen Werte.Aber Sie können schreiben Sie Ihre eigenen Komparator und Sortieren Sie Ihre Liste, wie Sie wollen. Die Sammlungen.sort()-Methode ist überladen daher
InformationsquelleAutor AnarchoEnte
Etwas sortiert werden, es muss die Umsetzung der Vergleichbar - Schnittstelle, die ist etwas, was die HashMap nicht.
Als Ergebnis, wenn Sie versuchen, Sortieren Sie Ihre Liste von HashMaps Ihr code fehlschlägt.
Wenn Sie wirklich brauchen, um in der Lage sein zu vergleichen, HashMaps, könnte man erstellen Sie Ihre eigenen HashMap, so etwas wie so:
InformationsquelleAutor npinti
Natürlich die compiler-Fehler versucht zu vermitteln, die Sie in der besten Weise es kann sein, dass es nicht vergleichen
HashMaps
, dass Sie innerhalb Ihrer Liste..Zunächst sollten Sie erklären, Ihre Liste als Allgemeine Liste wie diese: -
Wenn Sie möchten, zu Sortieren
List<HashMap>
zu können, müssen Sie eineComparator
zu Sortieren.. Sie können nicht Sortieren, es mit natürlichen bestellen.. Weil IhrHashMap
nicht implementiertComparable
- Schnittstelle..Können Sie nur den Vergleich von zwei Instanzen, wenn Sie vergleichbar sind..
*EDIT: Gut, ich denke, Sie müssen zwei
Comparators
hier.. für IhreList
und eine für IhreHashMap
innerhalb derList
.. Aber ich bin mir nicht Recht sicher, ob es funktionieren würde..InformationsquelleAutor Rohit Jain
Zunächst, dein code scheint seltsam, Sie sind das hinzufügen einer neu angelegten HashMap-Objekt in Ihre Liste in jeder iteration der Schleife. Wie auch immer, ich werde ihn nicht diskutieren. Vielleicht sollten Sie Ihre ArrayList wie diese:
ArrayList<HashMap>
Aber das ist nicht genug. Wenn Sie haben eine Liste von einem bestimmten Typ, und will Sie zu Sortieren, dann ist dein Typ (in diesem Fall HashMap) implementieren sollte
Comparable
- Schnittstelle. HashMap nicht umsetzenComparable
- Schnittstelle. Lesen Sie die API: http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.htmlSollten Sie implementieren Ihre eigenen Komparator als eine Lösung, denke ich.
InformationsquelleAutor Juvanis
Ja, Weil
java.util.Collections.sort(arList);
arList enthält die
HashMap hashList = new HashMap();
leider hashMap nicht implementieren die
Comparable or Comparator interface.
und Sammlungen.sort() Methode sort auf die Umsetzung der
InformationsquelleAutor subodh
Denke, der Fehler passiert in Zeile Sammlungen.sort().
Wenn Sie verwenden möchten, zu Sortieren, die Objekte in der Liste müssen Vergleichbar sein. Ansonsten wie java ist gonna Sortieren?
HashMap ist nicht Vergleichbar. Sie können erweitern HashMap und implementieren Vergleichbare Schnittstelle.
InformationsquelleAutor Michael Chen
Diese Weise können Sie erreichen eine Sortierte Map
Für weitere Details besuchen Sie HashMap
*
InformationsquelleAutor faraz tanveer