Liste nach bestimmten Kriterien ordnen

maki_99

Mitglied
Hallo,
ich tüfftel schon länger daran rum, aber ich komm nicht drauf:
habe eine ungeordnete Liste mit Strings: a1, c2, 1b, 3a, b2, c3
Diese soll so geordnet werden, dass das nächste Element immer einen Substring des vorherigen Elements enthält, also :

a1 > 1b
1b > b2
b2 > c2
c2 > c3
c3 > 3a

Die geordnete Liste wäre dann: a1, 1b, b2, c2, c3, 3a
Kann mir jemand helfen, wie könnte man das am besten lösen?
 

Michael...

Top Contributor
dass das nächste Element immer einen Substring des vorherigen Elements enthält ...
Die geordnete Liste wäre dann: a1, 1b, b2, c2, c3, 3a
"enthält" heißt irgendwo enthält? und "c2" muss nicht "2c" heißen?
Gibt's da irgendwelche Vorgaben/Bedingungen an den Substring (der könnte ja auch aus nur einem Buchstaben bestehen)? Was ist wenn mehrere Elemente einen Teil des Vorgängerelements enthalten?
 

RySa

Bekanntes Mitglied
a1 > 1b
1b > b2
b2 > c2
c2 > c3
c3 > 3a

Also irgendwie scheint mir hier etwas nicht zu stimmen. 1b > b2 , ok kann ich noch verstehen, 1b endet mit b und b2 fängt mit b wieder an. Aber dann kommt irgendwie b2 > c2...c2 > c3, da sehe ich kein Muster mehr. Entweder du hast dich vertippt oder willst etwas sortieren, ohne dass es irgend ein Muster für gibt...(was ja nicht geht..)

Außerdem finde ich diese sortierung an sich sinnlos (vermutlich weil ich nicht weiß wofür es dienen sollte). Aber ist es nicht besser etwas z.B als 1. Priorität nach Buchstaben zu sortieren und als 2. Priorität nach Zahlen oder umgekehrt ? also z.B a1,a2,b1,c1,c3 oder a1,b1,c1,a2,c3... Das mit den Substrings ist irgendwie ungewöhnlich

PS. Und was wenn es außer b2 noch b3 gibt ? was soll dann hinter 1b kommen ? 1b > b2 oder 1b > b3 ? Ich würde dir eher raten, das ganze zu umstrukturieren, weil das hier vermutlich nicht so gehen wird wie du es dir vorstellst.
 
Zuletzt bearbeitet:

maki_99

Mitglied
"enthält" heißt irgendwo enthält? und "c2" muss nicht "2c" heißen?
Gibt's da irgendwelche Vorgaben/Bedingungen an den Substring (der könnte ja auch aus nur einem Buchstaben bestehen)? Was ist wenn mehrere Elemente einen Teil des Vorgängerelements enthalten?
Also die Reihenfolge der Substrings ist egal, es sind einfach zwei verschiedene Zeichen, es können also auch zwei Buchstaben sein. Jeder Substring kommt in der Liste nur zweimal vor, also in zwei Elemente je einmal.

Wie macht man das mit einer Schleife und zwei Listen? Ich habe überlegt While die Größe der ungeordneten Liste größer Null ist, soll die ungeordnete Liste untersucht werden, wenn ein Element gefunden wurde, soll es der geordneten Liste hinzugefügt werden und aus der ungeordneten Liste gelöscht werden. Aber irgendwie bleibt es in der Schleife hängen. Woran kann das liegen??
 

Landei

Top Contributor
Wenn man deine Strings als Knoten eines Graphs auffasst, und alle Knoten mit gemeinsamen Substrings durch Kanten verbindest, entspricht die Aufgabe der Ermittlung eines Hamilton-Pfads.

Natürlich ist das Problem nicht immer lösbar.
 
Zuletzt bearbeitet:

RySa

Bekanntes Mitglied
substrings können verschiedene Längen haben, da muss du dich schon spezifizieren, ob die Strings immer aus 2 Zeichen bestehen, oder ob auch so etwas kommen kann: c12 > 12b oder aghj > ghjp. Außerdem hast du nicht gesagt nach welchem Element sich die anderen richten sollen.
Diese soll so geordnet werden, dass das nächste Element immer einen Substring des vorherigen Elements enthält, also :
Und bei welchem Element soll das bitte beginnen ? Immer beim ersten im Array ?

Falls ja und es immer nur 2 Zeichen sind, dann mach doch einfach:
Java:
	public static void main(String args[]){
		String[] test = {"a1","c2","1b","3a","b2","c3"};
		
		String[] temp = new String[test.length];
		temp[0] = test1[0];
		test[0] = null;
		for (int i = 0 ; i < temp.length ; i++){
			for (int j = 0 ; j < test.length ; j++){
				if (test1[j] != null && test[j].matches("\\w*("+temp[i].substring(0,1)+"|"+temp[i].substring(1,2)+")\\w*")){
					temp[i+1] = test[j];
					test[j] = null;
					j = test.length;
				}
			}
		}
		for (String s : temp){
			System.out.println(s);
		}
	}

Im temp hast du dann deine geordneten Elemente :)

Gruß
 
Zuletzt bearbeitet:

maki_99

Mitglied
substrings können verschiedene Längen haben, da muss du dich schon spezifizieren, ob die Strings immer aus 2 Zeichen bestehen, oder ob auch so etwas kommen kann: c12 > 12b oder aghj > ghjp. Außerdem hast du nicht gesagt nach welchem Element sich die anderen richten sollen. Und bei welchem Element soll das bitte beginnen ? Immer beim ersten im Array ?

Ja, sind immer zwei Zeichen und wo anfängt ist egal.

mit der while-schleife und zwei listen hab ichs inzwischen hinbekommen :toll:

das von dir werd ich auch mal ausprobieren, vielen dank...

Danke an alle :applaus:
 
V

vanny

Gast
nunja, wenns egal ist, wo das anfängt, dann kann zu a1 sowohl a3 als auch c1 passen, demnach gibt es je nach substrings x-Möglichkeiten (also ne Art Zufallsergebnis).
Wenn du das willst is das ja ok, ansonsten denke ich, dass das Konzept als solches sehr Fehleranfällig wird.

Gruß Vanny
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
D Liste nach 2 gleichen Einträgen suchen Java Basics - Anfänger-Themen 4
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
J Liste der Größe nach sortieren Java Basics - Anfänger-Themen 2
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
K keine Reaktion im TableModel nach ändern der liste? Java Basics - Anfänger-Themen 2
M Sortierte Liste nach Wert durchsuchen Java Basics - Anfänger-Themen 8
G Liste mit Artikeln nach ID sortieren Java Basics - Anfänger-Themen 6
Z Suche nach Liste? Java Basics - Anfänger-Themen 4
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
M Verkettete Liste Java Basics - Anfänger-Themen 1
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
M Nullpointer beim befüllen meiner Liste im Object Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
H Liste Knoten NullPointerException Java Basics - Anfänger-Themen 7
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
K Warum ist die binäre Suche bei der verketteten Liste nicht so effektiv? Java Basics - Anfänger-Themen 3
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
thor_norsk Verkette Liste Java Basics - Anfänger-Themen 27
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
M Java Liste streamen Java Basics - Anfänger-Themen 10
AmsananKING Aussortierung einer Liste Java Basics - Anfänger-Themen 8
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
S Kann nicht auf die Liste zugreifen mit der Methode!? Java Basics - Anfänger-Themen 3
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
J Doppelt verkette Liste ich bitte um Hilfe Java Basics - Anfänger-Themen 4
districon Element in Liste einfügen Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
Z Liste umkehren Java Basics - Anfänger-Themen 1
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
J Element aus Liste nehmen Java Basics - Anfänger-Themen 3
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
P Verschachtelte Array Liste Java Basics - Anfänger-Themen 2
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
P Performance Array und Liste Java Basics - Anfänger-Themen 13
M QuickSort und Liste Java Basics - Anfänger-Themen 6
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Koordinate in Liste suchen Java Basics - Anfänger-Themen 20
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
M Array liste Verdrehen Java Basics - Anfänger-Themen 8
A Verkettete Liste Java Basics - Anfänger-Themen 2
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
B Liste sortieren? Java Basics - Anfänger-Themen 4
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben