Hinzufügen ArrayList TreeMap zu innerhalb einer while-Zyklus
Ich bin das abrufen von Daten aus einer Tabelle in einer Datenbank und fügen Sie die gesamte Zeile ein TreeMap
.
Ich bin mit dem folgenden code:
ArrayList<String> listaValores = new ArrayList();
TreeMap<Integer, ArrayList> tmValores = new TreeMap<>();
(...)
while (rs.next())
{
listaValores.clear();
for(int i=2; i<=ncolunas; i++)
{
listaValores.add(rs.getString(i));
}
tmValores.put(rs.getInt(1), listaValores);
}
Meine TreeMap
Schlüssel eingesteckt sind gut, aber die Werte werden immer wiederholt, als die Werte aus der letzten Zeile als Ergebnis von SELECT * FROM Table-Abfrage.
Also wenn meine Tabelle:
id | name | last name |
1 | joe | lewis |
2 | mark | spencer |
3 | mike | carter |
4 | duke | melvin |
Meine TreeMap
enthält:
1=> duke, melvin
2=> duke, melvin
3=> duke, melvin
4=> duke, melvin
Statt (wie ich wollte)
1=> joe, lewis
2=> mark, spencer
3=> mike, carter
4=> duke melvin
Kann jemand Punkt mich aus, wo ist das problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Objekte in Java übergeben werden, um als Referenz, so sind Sie in der Tat Zugabe die gleiche Liste für alle Schlüssel auf einer Karte.
Da Sie klar, dass es bei jedem Schritt und fügen Sie einige Werte, die es enthalten wird nur die Letzte Zeile, nachdem die while-Schleife beendet ist.
Was Sie wirklich wollen, zu tun ist, erstellen Sie eine Instanz der
ArrayList
für jede Zeile, und fügen Sie, dass Ihre Karte statt löschen der Werte in den alten:Ich glaube, Sie haben die übernahme der Wert von
listaValores
.Einfach ändern
zu