Collection mit ArrayList

Status
Nicht offen für weitere Antworten.

mix2k1

Mitglied
Hallo,
ich habe eine ArrayList "meineListe" in die ich Array-Objekte "Zahlenfeld" legen will.
Code:
meineListe.add(durchlauf-1, zahlenfeld);

Wie kann ich jetzt wieder auf die Arrays zugreifen?
Mit
Code:
meineListe.get(i)
bekomme ich nur die Objektreferenz zurück.
 

Tobias

Top Contributor
Code:
meineListe.get(i)[index];

Meinste das? Wenn nein, formulier deine Frage klarer...

mpG
Tobias
 

Tobias

Top Contributor
Wenn i == durchlauf-1 bekommst du das entsprechende Zahlenfeld - genauso wie du es in der ArrayList abgelegt hast. Willst du die durchlauf-1ste Zahl des i. Zahlenfelds abfragen, schreibst du

Code:
meineListe.get(i)[durchlauf-1]

Mit ein bißchen mehr Code und ein wenig mehr Info darüber, was um alles in der Welt du da eigentlich machst, muss ich nicht so im Trüben fischen und kann dir effektiver helfen - aber vielleicht reicht das ja schon...

mpG
Tobias
 

mix2k1

Mitglied
Also geht darum Lottozahlen zu ziehen und dann die Ziehungsnummer samt Array mit den pro Ziehung gezogenen Zahlen in eine ArrayList oder LinkedList zu packen.

Es soll dann über einen Button die komplette Liste in der Konsole und später in einen Textfeld ausgegeben werden.

1 2 43 23 22 12 13 44
.
.
.

Hier sind die Methoden für hinzufügen und auslesen der Liste:

Code:
	public void Add2List(int[]a){
	    int [] zahlenfeld = a;
	meineListe.add(durchlauf-1, zahlenfeld);


Code:
public void GetList(){
	Iterator <int[]> it = meineListe.iterator();
	for(int i=0;i<meineListe.size();i++){
	    System.out.print("Ziehung " + meineListe.get(i)[durchlauf-1]);
	    it.next();
	    //System.out.print("Ziehung " + (i+1) + ":");
                    for(int j=0;j<7;){
	    System.out.print("  " + meineListe.get(i)[j]);
	    j++;
                    }
	System.out.println();
                }
 

Tobias

Top Contributor
Ah, ok.

1. Ist es Absicht, das deine Konsolenausgabe sieben Zahlen ausgibt (wenn man die führende 1 als Nummer der Ziehung interpretiert)? Ich denke hier an 6 aus 49 plus Superzahl, die Frage ist also ernstgemeint.

2. durchlauf ist eine Instanzvariable? Oder bekommst du schon Compilerfehler, weil durchlauf nicht deklariert wurde?

3. Was nützt dir ein Iterator, wenn du in dann doch nicht benutzt?

4. Die Nummer deiner Ziehung wird NICHT in der ArrayList gespeichert. Stell dir die ArrayList als eine Reihe von Kisten vor, in die du deine Werte ablegst. Als Konvention hast du und der "Lagerarbeiter", der dir die Kisteninhalte auf Anforderung holt, vereinbart, das mit der Zählung der Kisten immer von links begonnen wird und neue Werte immer in die erste nie belegte Kiste oder in die Kiste, die du ansagst, gelegt wird. Wenn du also drei Zahlenfelder in die (bislang leeren) Kisten legst und dementsprechend drei mal sagst "Lege diesen Wert in die nächste freie Kiste!", kannst du dir sicher sein, das das erste Feld in die erste Kiste von links kommt, das zweite in die zweite Kiste usw.

Moral der Geschicht': Deine auslesen-Methode sollte so aussehen:

Code:
public void GetList(){
    // Sehr gut, der richtige Gebrauch von Iteratoren ist wichtig für Java!
    Iterator <int[]> it = meineListe.iterator();
    // Wenn wir einen Iterator nutzen, soll auch dieser entscheiden 
    // dürfen, wann er keine Werte mehr liefert. Die Variable i 
    // brauchen wir trotzdem.
    for(int i=0; it.hasNext(); i++){
        // Kisten und Konventionen und so ...
        System.out.print(i + ". Ziehung: ");
        // Iterator arbeiten lassen
        int[] zahlenfeld = it.next();
        
        // zahlenfeld.length ist flexibler und leichter verständlich
        // Das j++ in den Schleifenkopf und nicht in den Rumpf 
        // zu schreiben ebenso!
        for(int j=0; j<zahlenfeld.length; j++){
            // Wenn ich das Zahlenfeld schon habe, sollte ich es
            // auch verwenden.
            System.out.print("  " + zahlenfeld[j]);
        }
        System.out.println();
    } // Fehlende Klammer ergänzt

}

mpG
Tobias

P.S.: Wo ich schon von Konventionen und so erzähle: Methodennamen schreibt man klein und in CamelCase. Methodennamen, die mit get beginnen, werden per Konvention benutzt, um Referenzen auf Instanzvariablen zurück zu liefern, eine get-Methode mit void-Rückgabetyp ist also ein klarer Verstoß gegen diese Konvention. Da du darüberhinaus eine Ausgabe auf die Kommandozeile machst, solltest du überlegen, ob du die Methode nicht lieber printList() oder ähnlich nennst.
 

mix2k1

Mitglied
Danke, so funktionierts.

1. Ja, das ist mein Absicht.

2. Es ist eine Istanzvariable, die pro Methodenaufruf "NeueZiehung()" 1 hochzählt. Einen Compilefehler hab ich njet.

3. Ich wußte nicht genau wo ich Ihn wie einsetzte.

4. Ich sehe grad, das Durchlauf auch garnicht gespeichert werden soll. Wäre ja dann eh doppelt, weil der Index der Liste ja quasi der Durchlauf ist ;)


Aber irgendwie gibt er mir jede Liste doppelt aus. Aber bekomm ich noch raus.

Eine Frage hab ich noch:
Wie kann ich Objektnamen zusammensetzen in einer FOR-Schleife?


So hatte ich gedacht

Code:
for(int i=1; i<=4;i++){
JPanel [myPanel[i]] = new JPanel();
}

sollte dieses hier ersetzen:

Code:
JPanel myPanel1 = new JPanel();	
			JPanel myPanel2 = new JPanel();	
			JPanel myPanel3 = new JPanel();	
			JPanel myPanel4 = new JPanel();
 

Tobias

Top Contributor
Sowas wie "variable Variablennamen" gibt es nicht in Java. Du kannst ein Array benutzen (wenn du im Vorraus weißt, wieviele Variablen du brauchst) oder eine Collection wie die von dir ja schon eingesetzte ArrayList.

mpG
Tobias
 

mix2k1

Mitglied
Habs jetzt mit nem Array:
Code:
			JPanel [] myPanels = new JPanel[4];
			{
			for(int i=0;i<myPanels.length;i++){
				myPanels[i] = new JPanel();}
 

mix2k1

Mitglied
Ich wollte jetzt noch das ganze in einem Textfeld ausgeben lassen.

Code:
		JTextField meinText = new JTextField(30);
		JScrollPane scrollfeld = new JScrollPane(meinText);
Mit
Code:
meinText.setText();
ich nur Strings schreiben.

Wie bekomme ich nun meine Collection in das Textfeld :(
Und wie mache ich einen Zeilenumbruch?
 

Tobias

Top Contributor
Textfelder können nur einzeiligen Text ausgeben, für mehrzeiligen mußt du TextArea verwenden.

Ein Zeilenumbruch bekommst du, indem du die Steuerzeichensequenz \n für newline verwendest.

Am einfachsten kannst du ein int[] in einen String umwandeln, in dem du die Methode toString() der Utility-Klasse Arrays verwendest. Etwa so:

Code:
import java.util.Arrays;

class Foo {

    private int[] meinArray = new int[6] { 1, 2, 3, 4, 5, 6};

    public void ausgeben {
        String meinString = Arrays.toString(meinArray);
        // weiteres hier ...
    }

}

Oder du schreibst dir eine eigene Methode zum Umwandeln, die den Array iteriert und die einzelnen Elemente einem String hinzufügst. Hier solltest du aber mal nach StringBuilder bzw StringBuffer suchen, damit geht das deutlich performanter (auch wenn das für dein Mini-Problem keine Rolle spielt).

mpG
Tobias
 

mix2k1

Mitglied
Bei mir steht immer nur die letzte Zeile im dem Ding.

Code:
		JTextArea meineTextJTextArea = new JTextArea( 2, 10);
		JScrollPane scroll = new JScrollPane(meineTextJTextArea);

Code:
		public void ShowList(){
			//this.setSize(400, 400);
			Iterator <int[]> it = meineListe.iterator();
			for(int i=0;it.hasNext();i++){
				System.out.print((i+1) + ". Ziehung: "); 
		       
		        int[] zahlenfeld = it.next(); 
					for(int j=0; j<zahlenfeld.length; j++){ 
						System.out.print("  " + zahlenfeld[j]); 
						 String meinString = Arrays.toString(zahlenfeld);
						 meineTextJTextArea.setText((i+1) + ". Ziehung: " + meinString + "\n");
					} 
		        System.out.println(); 
		    }
		}
 

Tobias

Top Contributor
Weil du mit setText() jedesmal den Text im TextArea überschreibst. Erst einen vollständigen String bauen und dann ganz am Ende setText() ausführen.

mpG
Tobias

Edit: Oder benutz append().
 

mix2k1

Mitglied
Wo ist denn ganz am Ende? So?

Code:
		public void ShowList(){
			
			//this.setSize(400, 400);
			Iterator <int[]> it = meineListe.iterator();
			for(int i=0;it.hasNext();i++){
				System.out.print((i+1) + ". Ziehung: "); 
		        // Iterator arbeiten lassen 
		        int[] zahlenfeld = it.next(); 	// Ein Array aus dem Object it.next() erzeugen
					for(int j=0; j<zahlenfeld.length; j++){ 
						System.out.print("  " + zahlenfeld[j]); 
						test = test + (i+1) + ". Ziehung: " + Arrays.toString(zahlenfeld) + "\n";
									
					}
		        System.out.println(); 
		    }
			meineTextJTextArea.setText(test);
		}
 

Tobias

Top Contributor
Ah, da war ich voreilig. Neben der setText()-Problematik uberschreibst du nämlich auch deine String-Referenz bei jedem Schleifendurchlauf:

Code:
public void ShowList(){
         //this.setSize(400, 400);
         Iterator <int[]> it = meineListe.iterator();
         for(int i=0;it.hasNext();i++){
              int[] zahlenfeld = it.next();
              String meinString = ""; // Objektreferenz hier deklarieren, da sie innerhalb 
                                                // der Schleife immer wieder überschrieben würde.
               for(int j=0; j<zahlenfeld.length; j++){
                  // String zusammenbauen
                  meinString = meinString + (i+1) + ". Ziehung: " + Arrays.toString(zahlenfeld) + "\n";                 
               }
               // Jetzt alles in die Textarea kippen
               meineTextJTextArea.setText(meinString);
               // System.out.println()? Du gibst doch nichts mehr auf der Konsole aus...
          }
}

mpG
Tobias

P.S.: Dein Kommentar zu it.next() ist übrigens falsch. Es handelt sich dabei nicht um ein Objekt, sondern um einen Methodenaufruf, der ein Array zurückgibt. Das aber nur am Rande, denn im großen und ganzen machst du das ziemlich gut.
 

mix2k1

Mitglied
Ok klappt so, aber meine Ausgabearea kann ich nicht in der Größe anpassen.
Wenn ich
Code:
 JTextArea meineTextJTextArea = new JTextArea(10,1);
eingebe, kommt verschiebt sich mein ganzes Fenster trotz Layout.
Oder wie stelle ich die Größe ein? Mit setSize gings gar nix.
 

Tobias

Top Contributor
Das hängt vom verwendeten LayoutManager ab. Du kannst dem LayoutManager vorschlagen, wie groß die Komponente dargestellt werden soll - dafür gibt es setPreferredSize(). setSize() wird vom LayoutManager benutzt, um der Komponente die letztendliche, tatsächliche Größe mitzuteilen - deine Änderungen hier werden also sofort vom LayoutManager überschrieben.

Bessere Hilfe bekommst du, wenn du Code postest (und vielleicht einen neuen Thread im AWT und Swing-Board eröffnest, weil das hier arg offtopic wird).

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rakshan Generic reading of XML document from the root tag into an Collection Allgemeine Java-Themen 0
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
W Collections Suche Collection, um Strings mit Indizees versehen Allgemeine Java-Themen 47
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
Y String-Collection: längste gemeinsame Strings / Prefixe Allgemeine Java-Themen 3
S Probleme mit Collection Allgemeine Java-Themen 7
S Passende Java Collection Allgemeine Java-Themen 5
D Eigene/r Collection/Container Allgemeine Java-Themen 3
K Collections Collection<> mit List<String> abgleichen? Allgemeine Java-Themen 10
D Beste Collection für Integer Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
M Collections Typ Variable einer generischen Collection ? Allgemeine Java-Themen 4
T Garbage Collection Frage Allgemeine Java-Themen 15
H Datentypen Collection für SQL-Datentypen Allgemeine Java-Themen 2
M collection persistence system Allgemeine Java-Themen 4
K associate collection with two open sessions Allgemeine Java-Themen 12
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
S Stilfrage bezüglich Beans mit Collection-Properties Allgemeine Java-Themen 2
B iText Portable Collection Acrobat X Allgemeine Java-Themen 2
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
Rudolf Aus Collection<Integer> eine Zahl machen Allgemeine Java-Themen 2
R Dateigestützte Collection für große Datenmengen Allgemeine Java-Themen 5
hdi Garbage Collection Allgemeine Java-Themen 12
P Collection Tree Allgemeine Java-Themen 19
C Die schnellste Collection-Klasse ? Allgemeine Java-Themen 37
K Collection.contains()/retainAll() mit Referenzgleichheit statt equals()? Allgemeine Java-Themen 2
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
E Collection Problem Allgemeine Java-Themen 2
B Geordnete, begrenzte Collection Allgemeine Java-Themen 3
D [SOLVED] Collection wird nicht richtig per Konstruktor übernommen Allgemeine Java-Themen 8
S Wahl der Collection, unspezifizierte Elementtypen Allgemeine Java-Themen 4
D Map mit Collection Eigenschaften Allgemeine Java-Themen 9
T Objekt der Garbage Collection zugaenglich machen? Allgemeine Java-Themen 7
S Innerer Type einer generischen Collection herausfinden? Allgemeine Java-Themen 13
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Schnelligkeit einer Collection Allgemeine Java-Themen 12
V Collection in Collection Allgemeine Java-Themen 3
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
M Collection aufteilen Allgemeine Java-Themen 4
S Collection Type Allgemeine Java-Themen 8
S Probleme mit collection.containsAll Allgemeine Java-Themen 28
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
C Collection Multithreading? Allgemeine Java-Themen 33
vogella Überschreiben von equals und hashcode für Collection Allgemeine Java-Themen 7
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
M Schnellste Collection/Liste Allgemeine Java-Themen 15
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
L Welche Collection ist die richtige ? Listen mergen Allgemeine Java-Themen 3
B Collection Allgemeine Java-Themen 2
M Wie lange dauert ein garbage collection Allgemeine Java-Themen 7
R Garbage Collection bei gegenseitiger Objektreferenz Allgemeine Java-Themen 2
N Collection#retainAll(Collection<?> c) Allgemeine Java-Themen 3
M garbage collection Allgemeine Java-Themen 14
G Frage zur Garbage Collection Allgemeine Java-Themen 5
R Objekttyp ermitteln das aus generischer Collection kommt Allgemeine Java-Themen 3
J Von Collection zu vector Allgemeine Java-Themen 5
P Welche Collection verwenden? Allgemeine Java-Themen 4
S Sortierung einer Collection nach dem Attribut "name&quo Allgemeine Java-Themen 3
C Collection Element ersetzen Allgemeine Java-Themen 5
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
C Collection, LinkedList, Elemente Allgemeine Java-Themen 4
M ArrayList oder LinkedList Allgemeine Java-Themen 10
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
B Type mismatch: cannot convert from Graph.Edge to ArrayList<Graph.Edge> Allgemeine Java-Themen 21
R ArrayList Allgemeine Java-Themen 4
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
L ArrayList sortieren Allgemeine Java-Themen 2
C ArrayList Problem Allgemeine Java-Themen 3
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
S ArrayList Design Allgemeine Java-Themen 4
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
X Output von ArrayList Allgemeine Java-Themen 3
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
MiMa ArrayList sortieren?? Allgemeine Java-Themen 5
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
F Arraylist vollständig abspeichern und laden Allgemeine Java-Themen 1
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
D ArrayList Indexlänge ändern Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
N Mehrdimensionale ArrayList mischen Allgemeine Java-Themen 10
S JTable - mehrere ausgewählte Rows in ArrayList Allgemeine Java-Themen 5
MiMa Date aus einer ArrayList<Date> holen ?? Allgemeine Java-Themen 5
MiMa ArrayList Rückgabewerte aus einer Funktion Allgemeine Java-Themen 15
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben