Elemente sortiert in Liste einfügen

tinki

Mitglied
Hallo!
Ich muss eine einfach verkettete Liste in Java implementieren. In meiner bereits vorgegebenen Klasse Attendee werden Attribute wie zB String name usw. angegeben. Nun möchte ich beim Anlegen eines neuen attendees zuerst überprüfen, ob der Name bereits vorhanden ist (wenn nicht - Rückmeldung an Benutzer, dass dieser attendee schon angelegt wurde) und dann soll dieser noch alphabetisch richtig in die Liste eingegliedert werden.
Ich verstehe einfach nicht, welche compare - compareTo - comparator - comparable - sort .... ??? - Methode ich hier am besten verwende - außerdem verstehe ich die Verwendung dieser Methoden einfach nicht so richtig, glaube ich.
Ich habe das Gefühl, dass mir einfach ein richtiger Denkanstoß fehlt...

Bitte um Hilfe!

DANKE!!!
LG, Tinki
 
S

SlaterB

Gast
angenommen du hättest auf Papier aufgemalt vor dir liegen 10 Zahlen in Reihenfolge
und willst jetzt eine bestimmte Zahl x irgendwo dazwischenkrakeln, an sortiert an richtiger Stelle,
würdest du das mit Kopf, Augen, Arm und Stift hinbekommen?
wie wäre dein Vorgehen ungefähr wenn du mal versuchst das in einzelne beschreibbare Schritte zu zerlegen
 

tinki

Mitglied
ich würde die Liste vom ersten Element aus durchgehen und dann jedes Element der Liste mit dem Element, das ich einfügen möchte vergleichen: wenn das Listenelement kleiner ist, als mein einf.Element, dann springe ich zum nächsten Listenelement und vergleiche das. Ist das Listenelement größer, muss mein einf.Element davor eingefügt werden - ist es gleich, darf das einf.Element nicht eingefügt werden ...

soweit krieg ichs glaub ich noch hin...
hilft mir aber wenig dabei, die richtige Sortiermethode für mich zu finden...
 
S

SlaterB

Gast
wenn du eine Liste sortieren willst gibt es Collections.sort

ansonsten musst du (im einfachen Fall) so arbeiten wie beschreiben, die Liste durchlaufen und immer schön Elemente vergleichen,
auf welche Weise du das machst ist dir überlassen, du kannst ganz ohne Standard-Methoden auskommen,
der Standardweg ist aber immer object.compareTo(object)
 

tinki

Mitglied
wenn ich nun compareTo verwende - weiß dann die Methode von selbst, dass a vor b vor c usw. kommt und würde sie automatisch erkennen, dass Hans < Harald ist?
 

ARadauer

Top Contributor
compare - compareTo - comparator - comparable - sort
naja wenn du die liste selber implementierst brauchst du kein sort, comperator und comparable...
du musst wissen ob ein name größer oder kleiner ist als ein anderer und dass kannst du mit compareTo machen
 
S

SlaterB

Gast
wenn diese Methode vorhanden ist, längst nicht bei allen Klassen, dann ist sie in der Regel auch sinnvoll implementiert,
String z.B. vergleicht, ja, wenn auch mit Macken, z.B. bei deutschen Umlauten

Java:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println("Andi".compareTo("Berta"));
        System.out.println("Ändi".compareTo("Berta"));
    }
}
 

tinki

Mitglied
hmmm....das ist mein Versuch (funktioniert noch nicht - aber ich habe das Gefühl, ich mach noch grob was falsch - bitte um Hilfe!)

Java:
public boolean addAttendee (Attendee attendee) {
		Attendee search = head;
		Attendee searchPrev = null;
		while (search != null && !attendee.equals(search)) {
			switch (attendee.compareTo(search)) {
				case 1: {
					searchPrev = search;
					search = search.next;
					return true;
					break;
				}
				case -1: {
					attendee.next = search;
					if (searchPrev == null) {
						head = attendee;
					} else {						
						searchPrev.next = attendee;
					}
					return true;
					break;
				}
				case 0: {
					return false;
					break;
				}
			}
					
			
			
		}
	}
 
S

SlaterB

Gast
schau dir den Rückgabewert von attendee.compareTo(search) an, ob das immer genau -1, 0, 1 oder auch was anderes ist..

wenn du in jedem Fall mit return die Bearbeitung beendest, dann bräuchtest du gar keine Schleife
 

tinki

Mitglied
oh mann - ich versteh das einfach nicht...

ich hab das Programm jetzt so umgeschrieben:

Java:
public boolean addAttendee (Attendee attendee) {
		boolean add = false;
		Attendee search = head;
		Attendee searchPrev = null;
		while (search != null && !attendee.getName().equals(search.getName())) {
			if ((attendee.getName().compareTo(search.getName())) < 0) {

				searchPrev = search;
				search = search.next;
				add = true;
					
			} else if ((attendee.getName().compareTo(search.getName())) > 0) {

				attendee.next = search.next;
				if (searchPrev == null) {
					head = attendee;
				} else {						
					searchPrev.next = attendee;
				}
				add = true;

				
				}

		}
			
		
		if (attendee.getName().equals(search.getName())) {
			System.out.println("Name bereits vorhanden!");
			add = false;
		}
		return add;
	}

In einem Testprogramm habe ich versucht, einen neuen attendee zu erstellen.
Die Sache funktioniert, wenn ich einen attendee erstelle, der einen bereits vorhandenen Namen hat - dann krieg ich eine Meldung, dass der schon da ist und nicht in die Liste aufgenommen werden kann.
Aber wenn ich nun andere attendees mit anderen Namen erstelle, funktionierts nicht...

komischerweise lässt sich das Programm compilieren, aber es terminiert dann nicht mehr...

HILFE! Bitte!
 
S

SlaterB

Gast
ich habs mir nun 5 Min. angeschaut und glaube den Fehler zu sehen, aber wenn du jetzt einfach an jeder Stelle, an der du vermeintlich nicht weiterkommt, hier fragst,
dann bringt das direkte Lösen ja nur die nächste Frage..

Gegenfrage: warum sollte es terminieren?
du musst für jeden Ablauf planen, was wann passieren soll,
z.B. hast du jetzt in der Schleife überhaupt kein return oder break mehr, wird diese überhaupt wenn wann ja wann wo wie warum beendet?

günstig ist allgemein alternativ zu eigenen Überlegungen, ein Log einzubauen,
zu Beginn jeder Schleife ein System.out.println() mit dem aktuell verglichenen Element, in jedem if genauso usw.
wenn 1 Mio. Ausgaben pro Sekunde kommen hilft Thread.sleep(300) mit try/catch drumherum zur Verlangsamung

aus dem Log läßt sich dann im Fehlerfalle oft die Erklärung finden bzw. man kann es dahin erweitern
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
W Elemente aus einer anderen GUI steuern! Java Basics - Anfänger-Themen 13
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
A Eindeutige Elemente aus Array extrahieren Java Basics - Anfänger-Themen 9
gamebreiti Gui menu ArrayList Elemente wiedererkennen Java Basics - Anfänger-Themen 3
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
W wie legt man die elemente der liste k Mal fest ? Java Basics - Anfänger-Themen 7
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
C ArrayList - überschreibt Elemente Java Basics - Anfänger-Themen 7
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
L Rückwärtsausgabe der Array-Elemente Java Basics - Anfänger-Themen 5
1 Elemente von 2 Arrays vergleichen Java Basics - Anfänger-Themen 12
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
J Eingabe Elemente Aktivieren Java Basics - Anfänger-Themen 2
R Best Practice Elemente aus ArrayList entfernen (performant) Java Basics - Anfänger-Themen 6
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
T Elemente im Array umdrehen Java Basics - Anfänger-Themen 9
L Elemente zufällig in ein Array verteilen Java Basics - Anfänger-Themen 12
T Wieviel Array-Elemente Java Basics - Anfänger-Themen 19
M Elemente im DefaultListModel separat auslesen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P BitSet- Objekt- Anzahl der Elemente bestimmen Java Basics - Anfänger-Themen 2
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
Mrtwomoon Collections Hashset elemente ohne Eckigeklammer ausgeben Java Basics - Anfänger-Themen 9
W Elemente in einem Array nach 'oben' verschieben Java Basics - Anfänger-Themen 9
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
H Redundante Elemente aus ArrayList entfernen Java Basics - Anfänger-Themen 3
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
A Elemente aus Liste entfernen Java Basics - Anfänger-Themen 5
A Elemente in HashSet enthalten oder nicht Java Basics - Anfänger-Themen 6
C Elemente im StringBuffer ersetzen Java Basics - Anfänger-Themen 19
E Elemente einer (öffentlichen) ArrayList in einer anderen Klasse zu einer ArrayList dazu fügen. Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben