Vector Sortieren

  • Themenstarter Themenstarter LehmaMark
  • Beginndatum Beginndatum
L

LehmaMark

Gast
Hallo Zusammen,

ich habe ein
Java:
Vector
, welcher
Java:
String[]
beinhaltet.

Ein
Java:
String[]
sieht bspw. so aus:
Java:
"Mustername", "13121", "Bild"
. Und von diesen String[] habe ich mehrere in einem Vector gespeichert. Statt ein
Java:
Vector
könnte ich genau so gut auch ein
Java:
ArrayList
nehmen. Nun würde ich gerne nach dem Musternamen sortieren. Irgendwie bekomme ich das nicht hin.

Mit folgendem Code funktioniert es bei mir nicht, da ich die Werte aus der Datenbank hole.
Java:
Collections.sort(myVector, new Comparator<MyClass>() {
   public int compare(MyClass o1, MyClass o2){
      return o1.getNachname().compareTo(o2.getNachname());
   }
});

Weiß jemand von euch, wie ich bspw. nach dem Musternamen sortieren könnte?

Viele Grüße
Markus
 
Den
Code:
ganzen
code
Code:
braucht
man
Code:
nicht
einzeln
Code:
zu
taggen...

Grob so
Java:
Collections.sort(myVector, new Comparator<String[]>() {
   public int compare(String[]o1, String[]o2)
   {
      for (int i=0; i<o1.length; i++)
      {
          int n = o1[i].compare(o2[i]);
          if (n != 0) return n;
       }
       return 0;
   }
});
 
Wenn du das nicht mit String Arrays machen würdest, sondern richtig in einer Klasse verpacken würdes,t wäre der Code von dir sogar korrekt 🙂

Ansonsten so etwas wie:
Java:
		 Collections.sort(myVector, new Comparator<String[]>() {
			@Override
			public int compare(String[] o1, String[] o2) {
				return o1[0].compareTo(o2[0]);
			} 
		});
 
Die Aussage in dem Vector befinden sich Stringarrays und
Java:
public int compare(MyClass o1, MyClass o2){
      return o1.getNachname().compareTo(o2.getNachname());
passt nicht zusammen.
Der Comperator geht davon aus, dass sich im Vector Objekte vom Typ MyClass und nicht vom Typ String[] befinden.

Letzeres wäre mein Vorschlag gewesen: Verwende statt String[] eine eigene Klasse, die entsprechende get-Methoden verfügt, um die einzelnen Attribute auszulesen.
Auch würde ich ArrayList statt Vector verwenden - wenn's möglich ist.
 
Danke für die schnelle Antwort. Besteht nicht die Möglichkeit, die Sortierung direkt nach dem "Musterman" durchführen zu lassen, oder ist man gezwungen, eine Klasse zu erstellen, mit dem man die Werte ausliest und sortiert?
 
Hast du mal den Code von Marco(compare zu compareTo ändern) oder meinen ausprobiert? Die machen genau das was du willst, Marcos Code sogar noch mehr(bei Gleichheit der Namen werden die nächsten Strings verglichen) (was mit Zahlen am Index 1 evtl. nicht ganz so gut klappt :bae: )
 
Hab grad den Code von Marco probiert. Der Code funzt 🙂. Wie kriege ich es jedoch hin, dass nun bspw. nach der Nummer "13121" sortiert wird?
 
Da sich das wie gesagt mit Strings schlecht machen lässt so einfach, müsstest du den String zu einem Integer wandeln, diese würden sich wiederum ohne Probleme mit compareTo vergleichen lassen!
Java:
		Collections.sort(myVector, new Comparator<String[]>() {
			public int compare(String[] o1, String[] o2) {
				return Integer.valueOf(o1[1]).compareTo(Integer.valueOf(o2[1]));
			}
		});

....:autsch::rtfm:
 

Zurück
Oben