Vektor mit eigener Datenstruktur sortieren

Ned Nederlander

Aktives Mitglied
Hallo ihr Lieben,
hab mich mal hier angemeldet, da ich ne kleine Frage hab, bei der ich
leider nicht weiterkomme.

Ich arbeite mit Vektoren, die von mir selbst erstelle Datenstrukturen enthalten, also
ne Mischung aus Strings und ints. Jetzt möchte ich diese Datenstrukturen in einer separaten Funktion
sortieren lassen, und zwar nach der größe des zweiten Vektorelements, das ein int darstellt.

Nun weiss ich leider nicht, wie ich der Funktion mitteile, was das für eine Datenstruktur ist.

Wäre nett, wenn mir jemand ein paar Tipps geben könnte.

Vielen Dank!
 

tfa

Top Contributor
Welche Objekte sind denn in dem Vector? Wirklich ints und Strings? Du solltest dir für deine Datenstruktur eine Klasse schreiben und nur Objekte dieser Klasse in den Vector (oder nimm gleich besser ArrayList) packen.
 
G

Gast2

Gast
Ich würde zunächst mal von Vektoren auf Listen umsteigen.

Dann kannst du folgendes machen:
Java:
        List<DeinDatentyp> liste = getMeineListe();
        Collections.sort(liste, new Comparator<DeinDatentyp>() {
            public int compare(DeinDatentyp o1, DeinDatentyp o2) {
                // hier entscheiden welches objekt größer/kleiner ist
                // und 0, 1 oder -1 zurückgeben.
            }
        });
 

tfa

Top Contributor
Dann kannst du sie sortieren, wie EikeB es vorgeschlagen hat. Du musst nur einen passenden Comparator schreiben.
 

Ned Nederlander

Aktives Mitglied
ich muss halt definitiv einen vektor eingeben und einen sortierten vektor ausgeben.
dazu müsste ich dann ja den vektor in der funktion umwandeln. wie geht das denn?
 
G

Gast2

Gast
Die sort Methode erwartet ein Objekt das List implementiert, und Vector tut das ;)
Du kannst also auch deinen Vector nutzen.
 
G

Gast2

Gast
Wie dieses sort funktioniert kann dir erstmal egal sein. Die Funktion muss allerdings wissen welches Element größer ist als ein anderes, und genau das steuert der Comparator.
 

tfa

Top Contributor
Die compare-Methode sortiert nicht. Das macht das sort().
sort() ruft intern compare() auf um die Reihenfolge der Elemente zu bestimmen.
 
G

Gast2

Gast
Das sagst du dem Comparator.
Der entscheidet ob ein Element größer oder kleiner ist als ein anderes. Würdest du z.b. nach irgend einer Priorität sortieren wollen könntest du folgende Comparator schreiben:

Java:
    new Comparator<DeineDatenstruktur>(){
            public int compare(DeineDatenstruktur o1, DeineDatenstruktur o2) {
                if (o1.getPriority() == o2.getPriority()) {
                    return 0;
                }

                return (o1.getPriority() < o2.getPriority()) ? 1 : -1;
            }
        }
 

Ned Nederlander

Aktives Mitglied
ah ok. aber wo geb ich da an, nach welchem element ich sortieren möchte?

die datenstruktur besteht wie gesagt aus verschiedenen datentypen, da sind strings und ints drin. mein 2. element sind jeweils ints, und nach denen würd ich gern ordnen.
 
G

Gast2

Gast
Bei mir wird nach getPriority sortiert, das kannst du ändern je nach dem wonach du sortieren willst.
 

tfa

Top Contributor
Was meinst du mit "Element"? Sortiert wird nach einer Eigenschaft (Property, Attribut) deiner Objekte. In dem Beispiel oben eben "priority". Zeig doch mal, wie deine Klasse aussieht.
 

Mizar

Aktives Mitglied
So wie du es hier sagtest:
Welche Objekte sind denn in dem Vector? Wirklich ints und Strings? Du solltest dir für deine Datenstruktur eine Klasse schreiben und nur Objekte dieser Klasse in den Vector (oder nimm gleich besser ArrayList) packen.
genau so hab ichs gemacht. das ding wurde in einer extra klasse definiert. die dinger füll ich dann in vektoren.
Müsste das ja dann zum gewünschten Ergebnis führen (nur ein Beispiel):
Java:
public class IntStrings
{
	String text;
	int value;
	
	public IntStrings(String text, int value)
	{
		this.text = text;
		this.value = value;
	}
	
	@Override
	public String toString()
	{
		return String.format("%s -> %d", text, value);
	}
	
	public static void main(String[] args)
	{
		Vector<IntStrings> vec = new Vector<IntStrings>();
		vec.add(new IntStrings("ich ", 15));
		vec.add(new IntStrings("gesehen.", 42));
		vec.add(new IntStrings("Lost ", 4));
		vec.add(new IntStrings("nie ", 23));
		vec.add(new IntStrings("habe ", 8));
		vec.add(new IntStrings("noch ", 16));
		
		Collections.sort(vec, new Comparator<IntStrings>()
		{
			@Override
			public int compare(IntStrings o1, IntStrings o2)
			{
				if(o1.value == o2.value) {
					return o1.text.compareTo(o2.text);
				}
				return o1.value > o2.value ? 1 : -1;
			}
		});
		
		for(IntStrings is: vec) {
			System.out.println(is);
		}
	}
}
Oder du implementierst für deine Klasse gleich das Comparable Interface.
 
Zuletzt bearbeitet:

Ned Nederlander

Aktives Mitglied
ich zeig euch mal meine datenstruktur, falls man das denn so nennt:
Java:
public class Datenstruktur{
	private String art;
	private int start;
	private int end;
	....

		
	
	public Datenstruktur(String a, int s, int e......){
		
		art = a;
		start = s;
		end = e;
		....
	
	}


       //get set Funktionen.

diese dinger werden jetzt in vektoren geschrieben. und ich möchte meine objekte im vektor nach dem zweiten wert sortieren, also "start". es sind aber mehr als 2 werte in solch einer datenstruktur.

@ mizar: danke für dein beispiel, aber wo ist da die unterscheidung zwischen dem erste und zweiten element? du hast wie ich das sehe paare mit jeweis einem string und einem int. aber wo ist die unterscheidung, dass du nach dem int sortieren willst? macht das dieses "value"? wie geht das denn, wenn mehr als ein "int" möglich ist, nach dem sortiert werden kann? ich hab ja nicht nur 2 werte, das sind viel mehr.

mal ein zwischenzeitliches DANKE an alle :)
 

Mizar

Aktives Mitglied
Naja, dann könnte das Ganze zum Beispiel so aussehen:
Java:
Vector<Datenstruktur> vec = new Vector<Datenstruktur>();
// ... Daten hinzufügen ...
// Und nun sortieren
Collections.sort(vec, new Comparator<Datenstruktur>()
{
	@Override
	public int compare(Datenstruktur o1, Datenstruktur o2)
	{
		if(o1.getStart() == o2.getStart()) {
			return 0;
		}
		return o1.getStart() > o2.getStart() ? 1 : -1;
	}
});
Oder wenn du dich dazu entschließen solltest das Comparable Interface zu implementieren, dann eben so zum Beispiel:
Java:
public class Datenstruktur implements Comparable<Datenstruktur>
{
    private String art;
    private int start;
    private int end;
    ....
    
    public Datenstruktur(String a, int s, int e......)
    {
    	art = a;
        start = s;
        end = e;
        ....
    }
    
    @Override
    public int compareTo(Datenstruktur o)
    {
    	if(this.start == o.start) {
    		return 0;
    	}
    	return this.start > o.start ? 1 : -1;
    }
}
Dann bräuchtest du natürlich keinen Comparator mehr und würdest das Ganze dann schlichtweg so sortieren:
Java:
Vector<Datenstruktur> vec = new Vector<Datenstruktur>();
// ... Daten hinzufügen ...
// Und nun sortieren
Collections.sort(vec);
Man könnte sich dann noch überlegen wie man vorgeht wenn die
Code:
start
-Werte zweier Elemente gleich sind...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Vektor vs List Java Basics - Anfänger-Themen 4
L Klassen Vektor Klasse Java Basics - Anfänger-Themen 2
E Variable (Vektor) in andere Methode übergeben Java Basics - Anfänger-Themen 4
O Matrix, Vektor Java Basics - Anfänger-Themen 9
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
M transposen Vektor transformieren Java Basics - Anfänger-Themen 8
M Vektor Rechnung Java Basics - Anfänger-Themen 6
B Stützstellen (Vektor) erzeugen? Java Basics - Anfänger-Themen 8
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
B Vektor addieren Java Basics - Anfänger-Themen 4
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
P Vektor im R3 drehen? Java Basics - Anfänger-Themen 14
M Map mit Vektor: Element hinzufügen Java Basics - Anfänger-Themen 21
A vektor bearbeiten?? Java Basics - Anfänger-Themen 9
V Position in einem Vektor Java Basics - Anfänger-Themen 3
A Wie greif ich auf Elemente eines Arrays in einem Vektor zu? Java Basics - Anfänger-Themen 6
D Array? ArrayList? Vektor? ...? Java Basics - Anfänger-Themen 6
C OOP Aus Vektor zufällig einen Eintrag wählen und in Array[][] schreiben Java Basics - Anfänger-Themen 5
Z Summe von Vektor-Elementen Java Basics - Anfänger-Themen 5
S Variable über den Vektor bestimmen Java Basics - Anfänger-Themen 20
J klasse vektor addition Java Basics - Anfänger-Themen 10
M Vektor Klasse Problem Java Basics - Anfänger-Themen 12
M Reihenfolge von Objekten im Vektor Java Basics - Anfänger-Themen 3
G Vektor auslesen und als int Variable casten Java Basics - Anfänger-Themen 4
G Mothoden von Objekten in Vektor aufrufen Java Basics - Anfänger-Themen 4
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
G Probleme mit Datenstrukturen (Vektor, HashMap) Java Basics - Anfänger-Themen 5
T Koordinaten eines Vektor übergeben Java Basics - Anfänger-Themen 21
J Vektor in Vektor speichern? Java Basics - Anfänger-Themen 10
J Vektor null setzen Java Basics - Anfänger-Themen 10
R Vektor in verketteter Liste Java Basics - Anfänger-Themen 14
J Vektor + auf Elemente zugreifen funktioniert nicht Java Basics - Anfänger-Themen 11
H Vektor auslesen und durchsuchen Java Basics - Anfänger-Themen 4
G Vektor Java Basics - Anfänger-Themen 1
C "null" Element Vektor abfragen Java Basics - Anfänger-Themen 7
C vektor erschaffen Java Basics - Anfänger-Themen 2
C Ein Element aus Mehrdimensionalem Vektor lesen Java Basics - Anfänger-Themen 2
L Vektor befüllen? Java Basics - Anfänger-Themen 3
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
S kartesischer Vektor im n-dimensionalen Raum. Java Basics - Anfänger-Themen 7
G Objekte in einen Vektor speichern Java Basics - Anfänger-Themen 4
M Vektor, gefüllt mit Objekten einer selbstdefinierten Klasse Java Basics - Anfänger-Themen 4
C checken ob ein Vektor leer ist Java Basics - Anfänger-Themen 3
J tast-Eingabe_(Vektor)Skalar-produkt Java Basics - Anfänger-Themen 19
G elemente in einem vektor nach ihren eigenschaften sortieren Java Basics - Anfänger-Themen 2
G Problem clone und Vektor Java Basics - Anfänger-Themen 4
M Vektor sortieren Java Basics - Anfänger-Themen 7
P Vektor toString? Java Basics - Anfänger-Themen 2
T Hashtable und Vektor Java Basics - Anfänger-Themen 3
I einlaggern von Objekten in ein Vektor Java Basics - Anfänger-Themen 10
G Vektor Java Basics - Anfänger-Themen 3
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Dez-->Binär mit eigener bit Anzahl Erkennung. Java Basics - Anfänger-Themen 3
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
B Eigener Validierungseditor? Java Basics - Anfänger-Themen 3
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
Bluedaishi Jar mit eigener JRE Java Basics - Anfänger-Themen 7
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
J Threads Problem mit eigener ArrayList Java Basics - Anfänger-Themen 2
E MCLauncher eigener Client workt nicht? Java Basics - Anfänger-Themen 4
A Input/Output Datenströme schließen in eigener Methode Java Basics - Anfänger-Themen 5
J Interface ActionListener in eigener Klasse Java Basics - Anfänger-Themen 27
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
N Schlüsselworte Bubble Sort nach eigener Ordnung Java Basics - Anfänger-Themen 8
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
Q ArrayList mit eigener Klasse in Java sotieren Java Basics - Anfänger-Themen 2
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
L Eigener FilterReader Java Basics - Anfänger-Themen 12
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
M import von eigener Klasse Java Basics - Anfänger-Themen 12
P ArrayList aus eigener Klasse "überschreibt" Werte nicht Java Basics - Anfänger-Themen 4
M xPos und yPos eigener Klassen geben lassen Java Basics - Anfänger-Themen 3
H Exit Befehl in eigener Konsole Java Basics - Anfänger-Themen 9
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
S Überladener Konstruktor und aufruf aus eigener Klasse Java Basics - Anfänger-Themen 2
D Klassen Problem mit Eigener Array-Klasse Java Basics - Anfänger-Themen 10
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
G Eigener Autoboxing Datentyp Java Basics - Anfänger-Themen 3
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
B Datentypen Probleme mit eigenem Get() bei eigener HashMap Java Basics - Anfänger-Themen 6
B OOP Eigener Event-Listener erstellen Java Basics - Anfänger-Themen 4
G Datentypen "Liste" eigener Objekte durchsuchen Java Basics - Anfänger-Themen 6
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
I Datentypen Eigener DatenTyp Java Basics - Anfänger-Themen 2
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
B Eigener Webserver + Eigener Webbrowser Java Basics - Anfänger-Themen 7
I eigener "Abstandshalter" vs. LayoutManager Java Basics - Anfänger-Themen 6
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
K Sinn eigener Exceptions Java Basics - Anfänger-Themen 11
D Container mit eigener Klasse Java Basics - Anfänger-Themen 5
B Verwenden eigener Object-Klassen Java Basics - Anfänger-Themen 9
H Eigener Button Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben