Objekte miteinander vergleichen und sortieren

ObiKenobi

Mitglied
Hallo,
ich hab gelesen dass mit hilfe von compareTo möglich sein soll 2 Objekte miteinander zu vergleichen.

Nun folgender fall,
ich habe die Klasse

Java:
	public class evaluatedData {
		public String schemaName;
		public String columnName;
		public String tableName;

		public boolean isTable;
		public boolean isColumn;
		public boolean isAdditional;
		public boolean isMetaDataDifferent;
		public boolean hasAdditionalColumns;

		public boolean isNullableEqual;
		public int isNullableA;
		public int isNullableB;

		public boolean isAutoIncrementEqual;
		public boolean isAutoIncrementA;
		public boolean isAutoIncrementB;

		public boolean isCaseSensitiveEqual;
		public boolean isCaseSensitiveA;
		public boolean isCaseSensitiveB;

		public boolean isReadOnlyEqual;
		public boolean isReadOnlyA;
		public boolean isReadOnlyB;

		public boolean isCurrencyEqual;
		public boolean isCurrencyA;
		public boolean isCurrencyB;

		public boolean isWritableEqual;
		public boolean isWritableA;
		public boolean isWritableB;

		public boolean isDefinitelyWritableEqual;
		public boolean isDefinitelyWritableA;
		public boolean isDefinitelyWritableB;

		public boolean isSearchableEqual;
		public boolean isSearchableA;
		public boolean isSearchableB;

		public boolean isSignedEqual;
		public boolean isSignedA;
		public boolean isSignedB;
	}

und die ArrayList

Java:
	ArrayList<evaluatedData> tableData

Diese würde ich jetzt gerne nach tableName, hab auch etwas gegooglet und rausgefunden dass das mit compareTo realisierbar ist, bin mir aber nicht sicher wie...

Könnt ihr mir helfen?
 
die compareTo-Methode muss man natürlich auch implementieren, damit Java weiß, was du haben möchtest,

ein grundlegendes Standard-Thema, zu dem man ruhig Stunden für saubere Lehrbuch-Abhandlungen investieren kann
Galileo Computing :: Java ist auch eine Insel - 13 Einführung in Datenstrukturen und Algorithmen
besser das ganze Kapitel 13 und alle davor sofern nicht bekannt,
oder eben verkürzt
13.6 Algorithmen in Collections
und dann besonders
13.6.1 Die Bedeutung von Ordnung mit Comparator und Comparable

(ein Beispiel einer Klasse, die Comparable implementiert, fehlt leider)
 
siehe auch meinen Link,
ein Lehrbuch oder Tutorial zu einem Standardthema ohne Begründung abzulehnen und eine indivudelle Neuformulierung bekannten Stoffs zu wünschen,
ist vergleichsweise wenig aussichtreich,

beschreibe doch in Worten was du wo genau nicht verstehst, Interface Comparable bekannt usw?
 
siehe auch meinen Link,
ein Lehrbuch oder Tutorial zu einem Standardthema ohne Begründung abzulehnen und eine indivudelle Neuformulierung bekannten Stoffs zu wünschen,
ist vergleichsweise wenig aussichtreich,

beschreibe doch in Worten was du wo genau nicht verstehst, Interface Comparable bekannt usw?

Deins hat mir geholfen😳

Ich rede vom Beitrag von Marcinek
 
Wieso sind die beiden Variablen in Zeile 13 und 14
Code:
int
s und keine
Code:
boolean
s?
 
Wieso sind die beiden Variablen in Zeile 13 und 14
Code:
int
s und keine
Code:
boolean
s?

weil Nullable offensichtlich ein Int ist, keine ahnung wieso, hab anfangs versucht es als Boolean abzuspeichern dann hat er aber rumgemeckert.

Okay, ich beginne die compare funktion zu verstehen.

Mir ist nur noch nicht ganz klar wie ich meine Arraylist mit den Objekten durchlaufen soll, das was ich jetzt gefunden hab ist

Java:
		Collections.sort(myArraylist, new Comparator(){
			public int compare(Object arg0, Object arg1) {
			        return ((MyObject)arg0).getId().compareTo(((MyObject)arg1).getId());
			}
		});

Theoretisch muss ich das ja nur mit 2 verschachtelten schleifen durchlaufen oder?
 
in der Methode sort stehen die 2 Schleifen, wenn du sort() verwendest musst du selber dazu nix machen,
nur einen Comparator definierten, der gepostete ist ziemlich fraglich, er macht reell gar nichts, ruft nur eine andere Methode auf,

vergleichbar mit einem Chef der eine Arbeit an einen Mitarbeitet delegiert 😉
irgendwo muss die Arbeit (des Einzelvergleichs, nicht der 2 Schleifen) tatsächlich auch geschehen,

wenn es in MyObject die compareTo-Methode schon gibt (von dir implementiert) dann kann MyObject ruhig Comparable sein, dann musst du nur noch
> Collections.sort(myArraylist);
aufrufen

andersrum, wenn Comparable nicht geht, dann lohnt sich der Comparator, dann sollte dort aber auch Code drinstehen,

so jetzt doch schon mal wieder weite Teile des Standardwissens seelenlos wiederholt 😉
 
Deins hat mir geholfen

Ich rede vom Beitrag von Marcinek

Das zeigt ja nur, das du meinen Beitrag nicht gelesen hast, weil der Link SlaterB ist hier auch enthalten. (Wenn auch nur am Ende).

Theoretisch muss ich das ja nur mit 2 verschachtelten schleifen durchlaufen oder?

Um was zu erreichen?

Nach dem aufruf von sort() ist die übergebene Liste sortiert, so wie es der Comperator gesagt hat.
 
in der Methode sort stehen die 2 Schleifen, wenn du sort() verwendest musst du selber dazu nix machen,
nur einen Comparator definierten, der gepostete ist ziemlich fraglich, er macht reell gar nichts, ruft nur eine andere Methode auf,

vergleichbar mit einem Chef der eine Arbeit an einen Mitarbeitet delegiert 😉
irgendwo muss die Arbeit (des Einzelvergleichs, nicht der 2 Schleifen) tatsächlich auch geschehen,

wenn es in MyObject die compareTo-Methode schon gibt (von dir implementiert) dann kann MyObject ruhig Comparable sein, dann musst du nur noch
> Collections.sort(myArraylist);
aufrufen

andersrum, wenn Comparable nicht geht, dann lohnt sich der Comparator, dann sollte dort aber auch Code drinstehen,

so jetzt doch schon mal wieder weite Teile des Standardwissens seelenlos wiederholt 😉

Hey Super, das hab ich jetzt kapiert, hatte in meiner Klasse jetzt schon das Comparable definiert gehabt hab mich nur gefragt wie ich es aufrufe und ihn letzendlich dazu "bringe" zu sortieren.

Das hat ja jetzt geklappt.
Mit > Collections.sort(myArraylist);
Vielen Danke dafür,

Grüße,
Obi
 

Zurück
Oben