PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Vector sortieren? Hilfe


Durcairion
2006-08-01, 00:06:16
Ich habe einen Vectore mit Personen aus einer Datenbank. Da die ID als PrimaryKey nur 1 mal vorhanen sein darf, würde ich den Vector gerne danach sortieren.

private Vector<Person> Sort(Vector<Person> vec)
{
int i,j;
Person tmp = new Person();
Person p1 = new Person();
Person p2 = new Person();
for(i=0;i<vec.capacity()-1;i++)
{
for(j=0;j<vec.capacity()-i-1;j++)
{
p1 = vec.get(0);
p2 = vec.get(2);
if(Integer.valueOf(p1.getID()).intValue() >= Integer.valueOf(p1.getID()).intValue())
{
tmp = p1;
p1 = p2;
p2 = tmp;
vec.remove(0);
vec.add(0, p1);
vec.remove(2);
vec.add(2, p2);
}
}
}
return vec;
}

Der Code hier funktioniert und tauscht mir das 1. (Pos. 0) mit dem 3. (Pos. 2) Element in der Liste.

Wenn ich jedoch anstatt der 0 j und anstatt der 2 ein j+1 einsetze, dann schmiert das Programm immer ab.

Kann mir jemand sagen wieso ich die Laufvariablen des BubbleSort hier nicht einsetzen kann? Das sind doch auch nichts anderes als Integer Werte :(

mithrandir
2006-08-01, 08:11:44
Dere!

Bei Collections mach man das gerne mit Collections.sort(..). Guckst du hier:
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sort(java.util.List)

Bist du sicher, dass du als Abbruchkriterium nicht die size()-Methode heranziehen solltest? Irgendwie sieht mir das Ganze nicht so ganz plausibel aus.

bye, Peter

HellHorse
2006-08-01, 10:10:40
Ich habe einen Vectore mit Personen aus einer Datenbank. Da die ID als PrimaryKey nur 1 mal vorhanen sein darf, würde ich den Vector gerne danach sortieren.

Verwende keine Vectors. Nimm LinkedList oder ArrayList. Und programmiere gegen Interfaces (List).

Arbeitest du für eine Firma? Hat dir niemand die Grundlagen beigebracht?

Demirug
2006-08-01, 10:13:20
„Datenbank“ ist doch wohl hier das Stichwort. Warum selber sortieren wenn die Datenbank das sowieso viel besser kann?

Durcairion
2006-08-01, 10:13:59
Ok das mit .size() stimmt :) Weis auch nicht was mich da geritten hat.

Nein ich arbeite nicht für eine Firma ich programmiere eine Anwendung die für mein Studium relevant ist. Und Java bring ich mir selbst bei. D.h. bisher noch keine Erfahrung damit.

Eher ein Learning by doing mit dem OpenBook Java ist eine Insel und diversen Foren wo ich mich "durchfrage" wenn ich mal länger als 2 Stunden nicht weiterkomme :)

„Datenbank“ ist doch wohl hier das Stichwort. Warum selber sortieren wenn die Datenbank das sowieso viel besser kann?

Weil das Programm ein "Abbild" der DB halten soll, man neue Einträge einfügen können soll und alte verändern und erst bei einem "klick" auf Update sollen die Eintrage an die DB übertragen werden.

Und da ich die Einträge im Programm auch gerne geordnet angezeigt hätte und nicht wie sie eingefügt wurden, würd ich sie gerne sortieren nachdem ich ein neues Element eingefügt habe.

del_4901
2006-08-01, 11:27:47
Ich würds gleich in einen sich selbst sotierenden Container einfügen.