Liste in einer Liste

b0cc

Mitglied
Hey,

es geht um ein Anfang einer Java-Anwendung und zwar, habe ich 2 Klassen.

1.Klasse enthält die GUI (die mit Hilfe von Windowbuilder erstellt wurde)
2.Klasse sollte die Berechnung durchführen

Also es gibt bis jetzt nur CheckBox(13 Stück) und ein Button. Man wählt also verschiedene CheckBox's und drückt auf den Button:

Java:
btnWegBerechnen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Berechnung ist die 2.Klasse
				Berechnung.abteilungen(); 
				Berechnung.anzAbteilungen = 0;
				Berechnung.chromosom.clear();
				Berechnung.population.clear();
			}
		});


Hier wird abgefragt welche und wie viele CheckBox ausgewählt wurden,
Bauhaus.getBauelemente() und andere if's benutzen die Methode isSelected()

Java:
public class Berechnung {
	static int anzAbteilungen = 0;
        static ArrayList<String> chromosom = new ArrayList<String>(); 
	static ArrayList<Object> population = new ArrayList<Object>();
	
	public static void abteilungen(){
		
		if(Bauhaus.getBauelemente()){
			chromosom.add(Bauhaus.bauelemente.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getBaustoffe()){
			chromosom.add(Bauhaus.baustoffe.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getEisenwaren()){
			chromosom.add(Bauhaus.eisenwaren.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getElektroinstallation()){
			chromosom.add(Bauhaus.elektroinstallation.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getElektroLeuchten()){
			chromosom.add(Bauhaus.elektroLeuchten.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getFarbenTapetenGalerie()){
			chromosom.add(Bauhaus.farbenTapetenGalerie.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getFliesen()){
			chromosom.add(Bauhaus.fliesen.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getParkettLaminatPaneele()){
			chromosom.add(Bauhaus.parkettLaminatPaneele.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getSanitaerSanitaerinstallation()){
			chromosom.add(Bauhaus.sanitaerSanitaerinstallation.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getSchreinerei()){
			chromosom.add(Bauhaus.schreinerei.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getStadtgarten()){
			chromosom.add(Bauhaus.stadtgarten.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getTeppicheInnendeko()){
			chromosom.add(Bauhaus.teppicheInnendeko.getText());
			anzAbteilungen++;
		};
		if(Bauhaus.getWerkzeugeMaschinen()){
			chromosom.add(Bauhaus.werkzeugeMaschinen.getText());
			anzAbteilungen++;
		};

Nun sollte eine ArrayList(chromosom) die ausgewählten CheckBox's mit ihren Namen(String) speichern.
Diese ArrayList sollte vermischt werden(mit Collections.shuffle(list)).
Nach dem mischen kommen noch 2 Strings am Anfang und am Ende der ArrayList.
Dann soll diese vermischte ArrayList in eine andere ArrayList gespeichert werden, die am Anfang/Ende eingefügten Strings wieder gelöscht werden und wieder gemischt usw. 100 mal.

Java:
ArrayList<String> chrom = new ArrayList<String>();
		
		for(int j=0; j<100; j++){	
		Collections.shuffle(chromosom);	
		chromosom.add(0, "Eingang");
		chromosom.add(chromosom.size(),"Ausgang");
		
		chrom = chromosom;
		population.add(chrom);
		chromosom.remove(0);
		chromosom.remove("Ausgang");
		
		}

So sollte am ende eine ArrayList mit 100 ArrayListen erstellt werden.
Doch beim Testen und Ausgeben wird eine ArrayList mit 100 ArrayListen erstellt, in den immer die 100 selben(selbe Reihenfolge) Strings vorhanden sind.

Das Problem liegt wahrscheinlich irgendwo in den globalen Variablen oder an static, aber er will ohne static die zwei Klassen nicht verwalten, gibt immer Fehler an.

p.s. Ich arbeite mit Eclipse
 
Zuletzt bearbeitet:

Landei

Top Contributor
Wenn du etwas wie [c]chrom = chromosom;[/c] machst, verweisen beide Variablen auf dieselbe Liste, alles was du mit chrom anstellst, ist auch in chromosom sichtbar und umgekehrt. Wenn du eine Kopie erstellen willst, geht das so: [c]chrom = new ArrayList<String>(chromosom);[/c]
 

tribalup

Bekanntes Mitglied
Nach dem mischen kommen noch 2 Strings am Anfang und am Ende der ArrayList.
Dann soll diese vermischte ArrayList in eine andere ArrayList gespeichert werden, die am Anfang/Ende eingefügten Strings wieder gelöscht werden und wieder gemischt usw. 100 mal.

Wozu kommen noch diese beiden Strings an den Anfang und an das Ende?
 

b0cc

Mitglied
Danke, jetzt klappt das auch alles wie geplant :)

Wozu kommen noch diese beiden Strings an den Anfang und an das Ende?

Die gehören in diese String-Folge rein, aber die müssen immer am Anfang und am Ende stehen, die anderen Strings möchte ich immer wieder vermischen, diese beiden String aber nicht, so füge/lösche ich diese extra.
 
Zuletzt bearbeitet:

b0cc

Mitglied
Reicht es dann nicht, sie einmal am Ende einzufügen?

Meinst du wenn die ArrayList fertig ist, mit einer for-Schleife die Strings am Anfang/Ende einfügen?

Ja klar, so könnte man es auch machen :)

Habe da noch eine Frage, die ganzen if's (13 Stück hintereinander), das sieht doch nicht gut aus, aber ich weiss nicht wie man das anders umschreiben könnte.
 
S

SlaterB

Gast
was die get-Methoden machen und was die direkt angesprochenden Variablen für Objekte enthalten verrätst du nicht (edit: ok, CheckBox),
anscheinend sind aber alle gleichartig, könnten in eine Liste, entweder hier mit 13 Zeilen, oder generell schon so eingebaut,

mit einer Liste ginge jedenfalls Schleifenverarbeitung, dann wäre der Rest noch 4 Zeilen,
die get-Methoden würden hier nicht mehr benötigt, fielen evtl. auch ganz weg, spart noch mehr
 

b0cc

Mitglied
was die get-Methoden machen und was die direkt angesprochenden Variablen für Objekte enthalten verrätst du nicht (edit: ok, CheckBox),
anscheinend sind aber alle gleichartig, könnten in eine Liste, entweder hier mit 13 Zeilen, oder generell schon so eingebaut,

mit einer Liste ginge jedenfalls Schleifenverarbeitung, dann wäre der Rest noch 4 Zeilen,
die get-Methoden würden hier nicht mehr benötigt, fielen evtl. auch ganz weg, spart noch mehr

meinst du die get-Methoden?

Java:
if(Bauhaus.getFliesen())

Wenn ja, dann habe ich oben geschrieben, dass diese nur prüfen ob die CheckBox ausgewählt wurde

Java:
public static boolean getFliesen() {
		return fliesen.isSelected();
	}

Wie meinst du das mit einer Liste?

Die get-Methoden könnte man auch weglassen und dierekt die CheckBox mit isSelected() abfragen, meinst du das so mit "get-Methoden würden hier nicht mehr benötigt"(c) ?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
jaja, die Zeile zum get überlesen,

alle CheckBox-Objekte könnten in eine Liste eingefügt werden, dann kann man darüber iterieren, getSelected() und getText() aufrufen,
nicht naheliegend?


> Die get-Methoden könnte man auch weglassen und dierekt die CheckBox mit isSelected() abfragen

das kommt nebenbei heraus, ja
 

b0cc

Mitglied
alle CheckBox-Objekte könnten in eine Liste eingefügt werden, dann kann man darüber iterieren, getSelected() und getText() aufrufen,
nicht naheliegend?

Danke, hat alles geklappt und mir die ganzen if's und get-Methoden(die auch so überflüssig waren) erspart :)
 

b0cc

Mitglied
Habe jetzt ein anderes Problem mit den Listen in einer Liste.

Und zwar, wollte ich diese Liste sortieren.

Ich habe 2 ArrayList

Java:
ArrayList<String> chromosom = new ArrayList<String>(); 
	List<ArrayList<String>> population = new ArrayList<ArrayList<String>>();

Also in der ersten Liste(chromosom) stehen Strings, "Flisen", "Bauelemente" usw. und am Ende dieser Liste steht ein String z.B. "12.7", das ich später als double-Wert verwende.
Die zweite Liste(population) enthält die chromosom-Listen.
Nun wollte ich diese Liste(population) sortieren, also nach den double-Werten der chromosom-Liste.

Aber anscheinend klappt es nicht so einfach mit Collection.sort(). Den er kann keine Listen sortieren und die compareTo-Methode ist auch noch ein Rätsel für mich, also wie ich die Listen richtig vergleichen soll.

Wahrscheinlich muss ich es manuell machen, listen durchgehen und in eine andere sortiert ablegen.

Wäre für jede Hilfe dankbar.
 
S

SlaterB

Gast
suche nach Comparator-Beispielen, der gibt für Collections.sort() an wie zwei Elemente zu sortieren sind,
die Elemente sind chromosom-Listen, von denen das letzte Element vergleichen

oder geht eine Chromoson-Klasse statt List<String>?
 

b0cc

Mitglied
Wenn ich die Methode Collections.sort() versuche, gibt Eclipse mir folgenden Fehler raus

Java:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<ArrayList<String>>). The inferred type ArrayList<String> is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>

Eine Chromosom-Klasse hab ich nicht. Ist nur eine String-List.

Oder meintest du ich sollte besser eine Klasse Chromosom machen und mit der arbeiten?
Habe die Frage leider nicht ganz verstanden :)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> eine Klasse Chromosom machen

war eine von zwei Varianten, die andere beginnt mit
> suche nach Comparator-Beispielen
 

b0cc

Mitglied
war eine von zwei Varianten, die andere beginnt mit
> suche nach Comparator-Beispielen

Mich hat jetzt nur die Fehlermeldung irritiert, dass Collections.sort() nicht dafür geeignet ist, Listen in einer Liste zu sortieren. Auch wenn ich compareTo()-Methode definiere.


Mit einer Chromosom-Klasse könnte das theoretisch erstmal gehen.
Weiss jetzt erstmal nicht wie sich das aber auf Collections.shuffle(chromosome) auswirkt, die ich auch noch nutze. Jetzt mischt er ja die ArrayList, ob es auch gut geht wenn es eine Klasse ist. Muss ich aber gucken
 

Landei

Top Contributor
Wenn ich die Methode Collections.sort() versuche, gibt Eclipse mir folgenden Fehler raus

Java:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<ArrayList<String>>). The inferred type ArrayList<String> is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>

Die Fehlermeldung sagt doch ganz genau, was falsch ist: [c]ArrayList<String>[/c] implementiert nicht [c]Comparable<...>[/c]. Du muss die andere Variante von sort verwenden, die noch einen Comparator annimmt, in deinem Fall einen [c]Comparator<ArrayList<String>>[/c]. Das ist nicht schwer, du musst dir halt nur überlegen, wie du vergleichen willst (was z.B. passieren soll, wenn die Listen nicht gleichlang sind).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
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
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
B GUI extension mit einer Liste verbinden Java Basics - Anfänger-Themen 1
AmsananKING Aussortierung einer 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
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
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
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
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
S IndexOutOfBoundsException beim hinzufügen eines Elements zu einer Liste Java Basics - Anfänger-Themen 11
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
T Collections Erstellung eines Listeneintrags einer verketteten Liste Java Basics - Anfänger-Themen 5
S Iterator einer Liste Java Basics - Anfänger-Themen 4
B Unterschiede in einer Liste erkennen Java Basics - Anfänger-Themen 1
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
P Zufälliges Wort direkt aus einer Liste ausgeben Java Basics - Anfänger-Themen 9
S Summe aus Kombinationen /permutationen einer Liste mit einer Obergrenze Java Basics - Anfänger-Themen 10
r4w Eigenschaften aus Objekt einer Liste holen Java Basics - Anfänger-Themen 3
T Auf Instanz einer Liste zugreifen Java Basics - Anfänger-Themen 2
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
I Erste Schritte Referenz zum Knoten davor, in einer Liste Java Basics - Anfänger-Themen 4
J Objekte in einer Liste Java Basics - Anfänger-Themen 3
N Objekt in einer Liste finden? Java Basics - Anfänger-Themen 3
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
C Positionen in einer Liste! Java Basics - Anfänger-Themen 3
T Liste mit nur einer Klasse erstellen Java Basics - Anfänger-Themen 22
S Abzählreim in einer zyklischen Liste Java Basics - Anfänger-Themen 1
1 Größe einer zirkulären Liste bestimmen .. ? Java Basics - Anfänger-Themen 2
M Sortieren von einer Liste - zwei zugehoerige Variablen Java Basics - Anfänger-Themen 5
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
S Jede Reihenfolge einer zufällig langen Liste ausprobieren Java Basics - Anfänger-Themen 3
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
P Liste in einer Klasse füllen und mehreren anderen Klassen lesend verwenden Java Basics - Anfänger-Themen 5
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
H Werte aus einer sortierten Liste auslesen Java Basics - Anfänger-Themen 58
A aus einer Liste eine Teilliste generiren Java Basics - Anfänger-Themen 6
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
M wie kann ich am besten die kleinste 2 elemente von einer Liste kriegen Java Basics - Anfänger-Themen 4
I Ersetzen eines Objektes in einer Liste? Java Basics - Anfänger-Themen 5
S Von einer Klasse auf eine Liste einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
S Entfernen aus einer Liste Java Basics - Anfänger-Themen 2
D Elemente einer Liste Java Basics - Anfänger-Themen 23
D Inhalt einer Liste auf nur ein Wert überprüfen ohne die Liste komplett zu interieren Java Basics - Anfänger-Themen 6
H Zeiger auf das letzte Element in einer linearen Liste Java Basics - Anfänger-Themen 4
L Randomisierung einer Liste: Ziehen ohne Zurücklegen Java Basics - Anfänger-Themen 5
I Letzter Index einer Liste Java Basics - Anfänger-Themen 8
I Anzahl einer Liste (Performance) Java Basics - Anfänger-Themen 2
I Objekte einer Liste einer weiteren List anhängen Java Basics - Anfänger-Themen 8
J Das Maximum einer Liste ermitteln Java Basics - Anfänger-Themen 8
E Auschnitt einer Liste darstellen Java Basics - Anfänger-Themen 7
D An bestimmten Knoten einer Liste zugreifen Java Basics - Anfänger-Themen 4
H Iteration und Editierung einer Liste Java Basics - Anfänger-Themen 6
S Fehler bei der add-Methode einer Liste Java Basics - Anfänger-Themen 5
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
S Elemente einer Liste mit true / false Werten Java Basics - Anfänger-Themen 3
B Werte aus einer JCombobox in eine Liste Java Basics - Anfänger-Themen 16
N Rekursives suchen in einer Liste Java Basics - Anfänger-Themen 8
G einer Liste Werte hinzufügen Java Basics - Anfänger-Themen 9
S Erweiterung einer Liste Java Basics - Anfänger-Themen 13
kulturfenster Zufallselemente einer Liste ausgeben Java Basics - Anfänger-Themen 10
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
A Problem mit Ausgabe einer Liste über einen Client Java Basics - Anfänger-Themen 5
M Liste in einer Klasse aufrufen Java Basics - Anfänger-Themen 4
J Array in einer Liste Java Basics - Anfänger-Themen 2
L rückwärtsausgeben einer doppelt verketteten liste Java Basics - Anfänger-Themen 2
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
P Minimum/Maximum aus einer Liste Java Basics - Anfänger-Themen 3
G Anzahl der Elemente einer Liste ausgeben Java Basics - Anfänger-Themen 15
H Objecte aus einer Liste heraus benutzen ? Java Basics - Anfänger-Themen 3
F Aktualisieren einer Liste von einem entfernten Objekt aus. Java Basics - Anfänger-Themen 11
C Mehrere Objekte in einer Liste einfügen und serialisieren Java Basics - Anfänger-Themen 1
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
R Liste und Arrays Java Basics - Anfänger-Themen 12
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
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
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
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
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

Ähnliche Java Themen

Neue Themen


Oben