Comparator

vikil

Aktives Mitglied
Hallo zusammen,
hab lange gesucht aber irgendwie nichts passendes gefunden.
Ich habe eine TreeMap in dieser lege ich Daten ab(String Objekt). Das sortieren mit compareTo funktioniert.
Ich will aber den Key der TreeMap nach meiner Vorgabe (aus einem Textfeld)sortieren.
Komm nicht dahinter :confused:. Habt ihr ein einfaches kleines Beispiel für mich

DANKE

Java:
	TreeMap<String, ZuliEintrag> symboltabelle = new TreeMap<String, ZuliEintrag>();

Java:
public class ZuliEintrag {

		private String symbolik;
		private String adresse;
		private String typ;
		private String komentar;
		private boolean status = false;

		public ZuliEintrag(String symbolik, String adresse, String typ,
				String komentar, boolean status) {
			this.symbolik = symbolik;
			this.adresse = adresse;
			this.typ = typ;
			this.komentar = komentar;
			this.status = status;
		}

		public class SortFilter implements Comparator<ZuliEintrag> {

			public int compare(ZuliEintrag s1, ZuliEintrag s2) {
				// TODO Auto-generated method stub
				return s1.symbolik.compareTo(s2.symbolik);
			}

		}

	}
 
Zuletzt bearbeitet:

vikil

Aktives Mitglied
Danke erst mal für schnelle Antwort.
Ich will in ein Textfeld was eingeben, und Symbolik soll sich danach sortieren.
1)Wo muss ich den eingelesenen String aus dem TextFeld einbinden. Hab probiert den s2.symbolik durch den TF String zu ersetzen ohne Erfolg.
2)Wo muss ich SortList einbinden weil mit Collection.sort(ZuliEintrag, new SortList()) geht es nicht
 

Flown

Administrator
Mitarbeiter
Ich glaube du stellst dir das anders vor als es funktioniert. Comparator gibt dir die Wertigkeit zweier gleicher Objekte zurück das heißt: welches Objekt ist kleiner als ein anderes.

Damit kann ein Sortieralgorithmus arbeiten er vergleicht die Wertigkeiten untereinander und kann sie dann in eine Ordnung bringen.

Deine Idee ist einen fixen-Knoten mit allen Objekten in deiner Collection zu vergleichen. Das Resultat wird sein, dass es größere und kleinere Objekte in der Collection gibt in bezug auf deinen fixen Knoten. Dies wiederum ist keine Ordnung.

Also wenn du Posten könntest mit einem Papiertest oder einem Beispiel was du erreichen willst, dann kann man dir auch helfen.
 

vikil

Aktives Mitglied
Also ich was zusammengemalt.
http://www.java-forum.org/attachment.php?attachmentid=6428&stc=1&d=1406715931

Ich glaube auch das ich es mir falsch vorstelle, da ich seit 2 Tagen nichts finden kann.

Was ich vor hab...
Es wir eine Symboltabelle Importiert in eine TreeMap (symboltabelle) .
Laut dem Filter oben im Bild soll diese sortiert werden. Nach der Sortierung ziehe ich mir die Adressen raus (mit symboltabelle.adresse) die übriggeblieben sind nach der Einstellung vom Filter-> Frage den Status dieser Signale von der SPS ab und aktualisiere die Anzeige
 

Joose

Top Contributor
Wo ist denn das Problem beim Anhang?
Einfach hochladen und das PopUp schließen, der Anhang wird automatisch hinzugefügt

Du musst keine URL extra einfügen ;)
 

Anhänge

  • text.txt
    4 Bytes · Aufrufe: 7
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Achso jetzt sind wir auf der selben Ebene du willst nur bestimmte Objekte aus deiner Collection haben?

Das ist dann was ganz anderes.

Hierzu mal ein kleines Bsp.:

Java:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.stream.Collectors;


public class Test {
	
	public static void main(String[] args) {
		new Test();
	}
	public Test() {
		int i = 0;
		String criteria = "criteria1";
		Map<Integer, Node> tm = new TreeMap<>();
		tm.put(i++, new Node("criteria1", "trueValue"));
		tm.put(i++, new Node("criteria1", "trueValue2"));
		tm.put(i++, new Node("criteria2", "falseValue"));
		tm.put(i++, new Node("criteria3", "falseValue"));
		
		//Lambda Expressions
		List<String> lambdaResult = tm.entrySet().stream().filter(e -> e.getValue().key.equals(criteria)).map(e -> e.getValue().value).collect(Collectors.toList());
		printList(lambdaResult);
		
		// < Java 8
		List<String> normalResult = new ArrayList<>();
		for(Entry<Integer, Node> entry : tm.entrySet()) {
			Node node = entry.getValue();
			if(node.key.equals(criteria)) {
				normalResult.add(node.value);
			}
		}
		printList(normalResult);
	}
	
	private <T> void printList(List<T> list) {
		for(T s : list) {
			System.out.println(s);
		}
	}
	
	class Node {
		public String key;
		public String value;
		
		public Node(String key, String value) {
			this.key = key;
			this.value = value;
		}
	}
}
 

vikil

Aktives Mitglied
gehe davon aus das du den Link öffnen konntest.
will die nur richtig sortiert bekommen haben. ziehe mir die Adressen dann nur z.B von den ersten 20 Einträgen.
Hab so was schon mit schleifen gemacht und geprüft ob der Filtertext in der Symbolik vorkommt und dann angezeigt.
Hab gedacht es geht einfacher mit TreeMaps..
Will es unbedingt mit TreeMaps machen-> Hintergedanke war Symbolik als key hinterlegen damit die Objekte direkt angesprochen und sortiert werden könne. gibt es evtl. alternativen?
Wenn nicht kannst mir vielleicht paar Wörter zu Zeile 23-32 schreiben..
Evtl wonach ich suchen soll..

DANKE
 

Anhänge

  • Sort.jpg
    Sort.jpg
    83 KB · Aufrufe: 34
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Der Link ist noch immer fehlerhaft.

Verstehe ich dich richtig, dass du in dieser TreeMap schon die gefilterten Objekte hast oder musst du diese filtern?

Nach dem Filtern musst du dann deine Elemente sortieren? Nach welchen Kriterien (wie schon gesagt, man kann nur Objekte untereinander sortieren)?.

Ich mach mich jetzt auf den Weg nach Hause und werde dir dann von dort aus antworten.
 
Zuletzt bearbeitet:

vikil

Aktives Mitglied
Daten werden in TreeMap importiert und dann immer wieder je nach Benutzer Eingabe sortiert. Sortiert werden soll je nach dem was der Benutzer eingibt, soll zuerst angezeigt werden.
Hab so was schon mit schleifen gemacht und geprüft ob der Filtertext in der Symbolik vorkommt und dann angezeigt.
Hab gedacht es geht einfacher mit TreeMaps..
Will es unbedingt mit TreeMaps machen-> Hintergedanke war Symbolik als key hinterlegen damit die Objekte direkt angesprochen und sortiert werden können. gibt es evtl. alternativen?
Evtl wonach ich suchen soll.. Glaube es geht so gar nicht so wie du geschrieben hast.

Ich gehe jetzt auch heim, melde mich heute Abend..

DANKE
 

Anhänge

  • Sort.jpg
    Sort.jpg
    83 KB · Aufrufe: 26
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Ja das ist jetzt etwas schwierig eine Filter und eine Sortierfunktion auf einmal zu implementieren. Also ich seh jetzt keine "einfache" Lösung für dein Problem, da es nicht einfach mit dem Comparator funktioniert.

Meine Lösungsansatz wäre die TreeMap nach deinen Vorstellungen zu sortieren. Danach die Objekte holen, die deinen Kriterium entsprechen, die dann als erstes anzeigen lassen, danach die restliche Liste kopieren und die gefilterten Objekte daraus löschen und darunter anzeigen.
 

Joose

Top Contributor
Wie Flown schon sagte: filtern und sortieren gleichzeitig ist etwas sehr mühsam und du müsstest genau festlegen nach welchen Schema das Ganze funktionieren muss etc.

Was du vielleicht machen könntest:
Liste sortieren (nach Symbolik) und anzeigen (ungefiltert),
bei der Eingabe in das Textfeld sortierst du die Liste nicht neu, sondern scrollst in der JTable einfach zu dem enstprechenden Eintrag

Vorraussetzung: Man kann nur nach Symbolik suchen/filtern, die Liste bleibt geordnet!
 

stg

Top Contributor
Meine Lösungsansatz wäre die TreeMap nach deinen Vorstellungen zu sortieren. Danach die Objekte holen, die deinen Kriterium entsprechen, die dann als erstes anzeigen lassen, danach die restliche Liste kopieren und die gefilterten Objekte daraus löschen und darunter anzeigen.

Da filtern in linearer Zeit funktioniert, sortieren aber nur in quasilinearer Zeit, sollte man (fast immer) zuerst filtern und dann sortieren!

(Ich habe nicht den ganzen Thread gelesen, daher hoffe ich, dass mein Kommentar überhaupt zum Problem passt... )
 
Zuletzt bearbeitet:

vikil

Aktives Mitglied
Danke erst mal an alle.
Bin erst jetzt dazu gekommen zu Antworten.
Mir würde eigentlich das Filter ausreichen. Habe es schon mit Schleifen gemacht-> Wenn Text , der im Filter steht, im TreeMap vorhanden ist, dann anzeigen sonst nicht.
Oder gibt es bessere Möglichkeit es zu machen?

Noch mal danke an alle:applaus::toll:
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
M Comparator Java Basics - Anfänger-Themen 25
M Comparator Java Basics - Anfänger-Themen 4
berserkerdq2 Wie lege ich ein Attribut comparator an? Java Basics - Anfänger-Themen 13
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
R Methode zwei Sortierkriterien der Klasse Comparator übergeben Java Basics - Anfänger-Themen 4
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
A Priority Queue / Comparator Java Basics - Anfänger-Themen 6
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
L Binäre Suche mit Comparator Java Basics - Anfänger-Themen 5
N Comparable bzw Comparator Java Basics - Anfänger-Themen 5
J Comparator Java Basics - Anfänger-Themen 21
A Comparator Java Basics - Anfänger-Themen 4
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
B Comparable & Comparator Java Basics - Anfänger-Themen 9
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
S Comparator für Generiks Java Basics - Anfänger-Themen 6
Helgon Interface Comparator wird nicht instanziert Java Basics - Anfänger-Themen 3
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
E Comparator sortiert falsch... Java Basics - Anfänger-Themen 2
M Comparator Java Basics - Anfänger-Themen 7
B OOP Logikhilfe zum Comparator 2 Java Basics - Anfänger-Themen 12
B OOP Logikhilfe zum Comparator Java Basics - Anfänger-Themen 11
G Comparator Problem Java Basics - Anfänger-Themen 5
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
H Comparable und Comparator Java Basics - Anfänger-Themen 22
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
A JTable sortieren mit einem Comparator Java Basics - Anfänger-Themen 2
S Comparator / Comparable ? Java Basics - Anfänger-Themen 3
G Objekte mit dem Attribut title mit Comparator sortieren Java Basics - Anfänger-Themen 5
P unchecked conversion to conform to Comparator Java Basics - Anfänger-Themen 3
G Comparator- methode compare exception werfen Java Basics - Anfänger-Themen 4
B interface Comparator Java Basics - Anfänger-Themen 4
M Hilfe bei der Erstellung der Comparator Klasse Java Basics - Anfänger-Themen 10
M ArrayList sortieren mittels Comparator Java Basics - Anfänger-Themen 10
G Sortieren ohne Comparator? Java Basics - Anfänger-Themen 4
G Comparator Java Basics - Anfänger-Themen 10
S Frage zu Comparator Java Basics - Anfänger-Themen 3
G ArrayList und Comparator Java Basics - Anfänger-Themen 6
M Comparator - Sortierkriterium Java Basics - Anfänger-Themen 11
L Comparator Java Basics - Anfänger-Themen 5
T Problem mit Comparator! Java Basics - Anfänger-Themen 7
C Anstatt Spalte, Zeile mit Comparator sortieren . Java Basics - Anfänger-Themen 5
B Liste sortieren mit Comparator Java Basics - Anfänger-Themen 2
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
S JTable mit Comparator sortieren, die Frage ist wo? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
W Comparator Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben