Mehr-Dimensionale ArrayList o.Ä.

Status
Nicht offen für weitere Antworten.

rockbottom

Mitglied
Hallo, ich bräuchte etwas wie eine Mehr-Dimensionale ArrayList aber komme irgendwie damit nicht klar...

Zweck: ich möchte UserId´s nach dem "Schema" ArraySchreibweise:

[x-koordinat][y-koordinate][Liste mit UserID]

speichern ohne vorher die Anzahl der UserId´s zu kennen.

ich habe bisher:

Java:
private ArrayList<ArrayList<ArrayList<Integer>>> mapArray = new ArrayList<ArrayList<ArrayList<Integer>>>();

nur bekomme ich natürlich eine indexOutOfBounce Fehlermeldung

nun hatte ich das schon umgeschrieben zu:

Java:
private ArrayList<ArrayList> mapArray = new ArrayList<ArrayList>(); 

//weiterer code

	public void initMapArray()
	{
		int i;
		int j;
		ArrayList tempListx;
		ArrayList tempListy;
		for(i = 0; i <= ROWS; i++)
		{
			//tempListx = mapArray.get(i);
			ArrayList<ArrayList> xMap = new ArrayList<ArrayList>();
			//tempListx.add(i, xMap);
			//mapArray.add(i, xMap);
			
			mapArray.add(i, xMap);
			for(j = 0; i <= COLS; j++)
			{
				tempListy = mapArray.get(i);
				ArrayList<ArrayList<Integer>> yMap = new ArrayList<ArrayList<Integer>>();
				tempListy.add(j, yMap);
			}
		}
	}


bekomme dann aber bei folgender Zeile:

Java:
ArrayList<Integer> currentField = mapArray.get(i).get(j);

den Fehler das ein Object gefunden wurde und keine ArrayList<Integer>

Könnte jemand so nett sein und mir meinen Denkfehler mitteilen, oder alternativ eine Andere Lösung vorschlagen unter der Vorraussetzung das wie gesagt die Anzahl der UserId´s nicht vorher bekannt ist und ich ungerne 500 leere Felder durchitterieren möchte.

Danke für jede Hilfe
 
S

SlaterB

Gast
> ArrayList<ArrayList> mapArray = new ArrayList<ArrayList>();
mapArray.get(i) liefert also eine ArrayList,

wie kannst du erwarten, dass get(j) auf eine ganz normale ArrayList eine ArrayList<Integer> liefert statt Object?
ganz in Ruhe drüber nachdenken, dann wird doch alles klar

deine vorherige Idee
ArrayList<ArrayList<ArrayList<Integer>>> mapArray = new ArrayList<ArrayList<ArrayList<Integer>>>();
wäre dagegen korrekt, so komisch es auch aussieht,
wenn es dort zu einem Fehler kommt, dann hilft es nicht, irgendwas ziellos wegzukürzen,
sondern überlegt vorgehen

----

alternativ verwende eine richtige Map Koordinaten -> Liste,
Koordinaten könnte im einfachen Falle ein String sein, x +", "+y,
 

rockbottom

Mitglied
Danke für die Info das mein erster Gedanke richtig war...

ich habe zwar nun ein andere Problem aber die exception hab ich erstmal abgefangen mittels

Java:
try {
			return mapArray.get(uX).get(uY);
		} catch (IndexOutOfBoundsException e) {
			ArrayList<Integer> blankList = new ArrayList<Integer>();
			return blankList;
		}

Nun muss ich rausfinden warum dem User seine Position und Andere Daten nicht mitgeteilt werden, ist aber ne andere Baustelle, denke liegt an fehlenden DB einträgen die ich mittels Hibernate hole:)



riesigen dank erstmal:)
 

rockbottom

Mitglied
trotzdem bekomme ichs nicht hin....

Java:
    	ArrayList<ArrayList<Integer>> tempArrayListX;
    	ArrayList<Integer> tempArrayListY;
    	try {
    		tempArrayListX = mapArray.get(uX);
    	} catch (IndexOutOfBoundsException e) {
    		tempArrayListX  = new ArrayList<ArrayList<Integer>>();
    		mapArray.add(uX, tempArrayListX);
    	}
    	
    	try {
    		tempArrayListY = mapArray.get(uX).get(uY);
    	} catch (IndexOutOfBoundsException e) {
    		tempArrayListY  = new ArrayList<Integer>();
    		mapArray.get(uX).add(uY, tempArrayListY);
    	}
    	
    		mapArray.get(uX).get(uY).add(tempUserID);

wieder die IndexOutOfBounce Exception..

aber wieso diesmal?
 

rockbottom

Mitglied
ok auch das hab ich hinbekommen... nur verfolgt mich die exception:)

mapArray.get(i).get(j);

was ist daran flasch... weil da müsste eigentlich was drinstehen ich trag doch hier was ein:

Java:
public void addMapArrayContent(Positions uP)//umgestellt auf ArrayList 3d
	{
		int uX = getUserX(uP);
		int uY = getUserY(uP);
		
    	long tempUserIDL = uP.getUserID();
    	int tempUserID = (int) tempUserIDL;
    	ArrayList<Integer> tempList = getMapArrayContent(uP);
    	tempList.add(tempUserID);
    	
    	
    	ArrayList<ArrayList<Integer>> tempArrayListX;
    	ArrayList<Integer> tempArrayListY;
    	try {
    		mapArray.get(uX).add(tempList);
    	} catch (IndexOutOfBoundsException e) {
    		Trace ("~~~~~~~~~~~ EXCEPTION ~~~~~~~~~~~~~");
    	}
}

mfg
 
S

SlaterB

Gast
mapArray ist in deinem Code weder definiert, noch wird je was eingefügt,
was soll man da rumraten?
 

rockbottom

Mitglied
mapArray ist in deinem Code weder definiert, noch wird je was eingefügt,
was soll man da rumraten?

gar nix wenn man so schlau war oben mit zu lesen

private ArrayList<ArrayList<ArrayList<Integer>>> mapArray = new ArrayList<ArrayList<ArrayList<Integer>>>();

steht doch da oben... son bischen denken und assozieren können iss schon von vorteil...

aber lass nur stecken... ich find das schon alleine raus...
 
S

SlaterB

Gast
wenn man bedenkt, dass ich diese Zeile sogar selber schon zitiert habe, ist die Argumentation gerade zu verwegen aufgebaut,
aber jedem wie es beliebt, mit dem Tonfall kann man auch weit kommen
 

Landei

Top Contributor
Damit wirst du nicht glücklich. Ich würde empfehlen, das Ganze mit einer Map abzubilden, wobei der Schlüssel aus beiden Koordinaten besteht. Dann noch eine kleine Hilfsmethode, und es sollte einigermaßen bequem zu benutzen sein:
Java:
private Map<int[], List<Int>> map = new HashMap<int[],List<Int>>();
...
public List<Int> getUserIds(int x, int y) {
   int[] key =  new int[]{x,y};
   List<Int> userIds = map.get(key);
   if (userIds == null) {
      userIds = new ArrayList<Int>();
      map.put(key, userIds); 
   }
   return userIds; 
}

Du brauchst dann kein setUserIds, du kannst dir einfach per getUserIds eine leere Liste holen und füllen, da sie ja schon der Map hinzugefügt ist.
 

aokai

Mitglied
Du schreibs das du die Anzahl der UserIDs nicht kennst. Kennst du den Koordinaten bereich vorher? Wenn ja würde ich das als 2Dim Array abbilden und den Quatsch mit verschachtelten Arraylist lassen. Kannst ja in dem Array dann ne Liste speichern.
 

Landei

Top Contributor
An sowas hatte ich auch gedacht, aber leider läßt sich nur List[][] und nicht List<Integer>[][] definieren.
 

rockbottom

Mitglied
wenn man bedenkt, dass ich diese Zeile sogar selber schon zitiert habe, ist die Argumentation gerade zu verwegen aufgebaut,
aber jedem wie es beliebt, mit dem Tonfall kann man auch weit kommen
sehr hilfreiches kommentar, typische reaktion eines mod, soviel zum tonfall...

wie gesagt ich habs inzwischen selber rausgefunden , hat zwar ganze 9 stunden eiens Samstages gedauert aber hey seit dem ich in java foren fragen stelle bin ich es gewöhnt das mehr blöde kommentare ohne zweckbezogenen inhalt kommen als sachdienliche hinweise... warte ma du hast hinweise auf ne miese rechtschreibung noch vergessen...

weisste mit mir kann man sich eigentlich vernünftig unterhalten, das hört aber dann auf wenn mich leute am langen arm verhungern lassen wollen und blöd kommen, für ne verpisste 5 minuten antwort, denk ma drüber nach und stell dir die Frage ob das auch zu netiquetete gehört

@ landei danke, aber hab gerad erst wieder hier rein geschaut, und es läuft nun mit der besagten mehrdimensionalen arraylist, ob das performant genug ist wenn 1000 user gleichzeitig online sind und alle 150ms und das ganze dementsprechend oft durchlaufen werden muss wird man sehen, falls nicht teste ich halt in einer dauer von 4-8 wochen mal alle datentypen der sorte collection durch.. besser als sich ständig in foren rum zu ärgern

auf hilfe in nem java forum zu warten hab ich weder zeit noch lust... sorry aber ich war noch nie ein krummbückler... und java entwickler sind für mich auch nur menschen und nicht das als was sie sich sehen... höhere wesen die ihr wissen von gott erhielten...

in dem sinne... mod kannst dann bitte meine regi hier löschen, denke der "tonfall" hier hat nun ausgereicht... aber irgendwann reichts einem einfach mal also stecks dir sonstwohin und nu tschüss:)

mfg und bye bye
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
celta_vigo Programmieranfänger braucht Rat zu mehr Praxisnähe Java Basics - Anfänger-Themen 8
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
berserkerdq2 Warum ist das keine Referenzkopie mehr? Java Basics - Anfänger-Themen 26
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
pkm Regexproblem - Wie kann ich zwei oder mehr beliebige Zeichen matchen? Java Basics - Anfänger-Themen 7
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
H Vier Augen sehen mehr... Java Basics - Anfänger-Themen 6
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
P Ich komme nicht mehr weiter bei so einer einfachen Sache... Java Basics - Anfänger-Themen 18
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
L Mehr Verschlüsselungen Java Basics - Anfänger-Themen 3
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S Warum kann ich nicht mehr als eine Variable in einer for Schleife deklarieren ? Java Basics - Anfänger-Themen 1
L Compiler-Fehler AndroidStudio Projekt startet nicht mehr!!! Java Basics - Anfänger-Themen 2
I Programm von mir - keine Ahnung mehr ob richtig falsch:-( Java Basics - Anfänger-Themen 6
kilopack15 Mehr Nachkommastellen mit double Java Basics - Anfänger-Themen 14
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
MrSnake Subimages mehr Speicherplatz als Original? Java Basics - Anfänger-Themen 2
T Methoden Nach der Schleife funktioniert nichts mehr Java Basics - Anfänger-Themen 7
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
D Erste Schritte Canvas verschwinden nicht mehr Java Basics - Anfänger-Themen 2
N Methode die mehr als ein Wert zurückgibt Java Basics - Anfänger-Themen 3
M .jar nicht mehr ausführbar. Java Basics - Anfänger-Themen 5
Z Fürge nur ein JTextField ein und danach wird nichts mehr angezeigt Java Basics - Anfänger-Themen 3
D MouseListener funktioniert nach Timerstart nicht mehr Java Basics - Anfänger-Themen 9
M Bekomm altes Uni-Projekt in java nicht mehr zum laufen Java Basics - Anfänger-Themen 7
H Empfohlene Projekt-Struktur und mehr ... Java Basics - Anfänger-Themen 5
S GUI kann im WindowBuilder nicht mehr (größer kleiner ziehen) Java Basics - Anfänger-Themen 2
O OOP Methoden bei erstellen einer Instanz und mehr Java Basics - Anfänger-Themen 4
J Java Writer funktioniert nicht mehr Java Basics - Anfänger-Themen 8
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
J Formen plötzlich nicht mehr aufrufbar! Java Basics - Anfänger-Themen 8
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
B Nichts geht mehr Java Basics - Anfänger-Themen 10
S MVC mit mehr als nur je einer Klasse? Java Basics - Anfänger-Themen 1
M Eclipse startet nicht mehr (eclipse.exe beendet sich selbst)? Java Basics - Anfänger-Themen 5
M Class nach Namensänderung nicht mehr vorhanden Java Basics - Anfänger-Themen 6
S Listener reagieren nicht mehr Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
Z Java Compiler will nicht mehr Java Basics - Anfänger-Themen 3
K Compiler-Fehler Programme funktionieren nicht mehr Java Basics - Anfänger-Themen 5
H Privat ist nicht mehr private Java Basics - Anfänger-Themen 7
P Wiedereinstieg und kann keine Dateien mehr öffnen... Java Basics - Anfänger-Themen 13
C Variable funktioniert plötzlich nicht mehr? Java Basics - Anfänger-Themen 4
V Kann kein Java Projekt mehr mit Eclipse erstellen Java Basics - Anfänger-Themen 5
E Fehlermeldung und Fenster wird nicht mehr angezeigt Java Basics - Anfänger-Themen 12
P Classpath jdbc-Treiber kann nach export in jar-File nicht mehr geladen werden Java Basics - Anfänger-Themen 2
M Mutiple markers werden in Eclipse nicht mehr angezeigt Java Basics - Anfänger-Themen 2
T Compiler-Fehler Eclipse reagiert nicht mehr auf Änderungen im Code Java Basics - Anfänger-Themen 2
L Klassen Ich kann keine .jar Dateien mehr öffnen Java Basics - Anfänger-Themen 4
F Erste Schritte JCreator arbeitet nicht mehr als Eingabeaufforderung. Warum? Java Basics - Anfänger-Themen 5
C Versandmarkendruck bei der DP funktioniert nicht mehr Java Basics - Anfänger-Themen 3
P Laenge von mehr dimensionalen arrays Java Basics - Anfänger-Themen 2
F Warum werden nicht mehr Programme in Java geschrieben? Java Basics - Anfänger-Themen 27
K Action Listener reagiert nicht auf Button druck mehr??? Java Basics - Anfänger-Themen 4
T Programm läuft nicht mehr... Java Basics - Anfänger-Themen 3
H Beim Vergleich/Sortieren mehr als zwei Objekte berücksichtigen Java Basics - Anfänger-Themen 14
G Scrollbares Fenster bei mehr als 5 Objekten Java Basics - Anfänger-Themen 4
B Interface Nach "package"-Nennung keine Toolbar-Icons mehr Java Basics - Anfänger-Themen 5
I ComboBox mit Icons + Mehr...! Java Basics - Anfänger-Themen 6
F Ich kenn mich nicht mehr aus - 'java.lang.NoSuchMethodError: main' in Applet? Java Basics - Anfänger-Themen 2
F Spiel geht nicht mehr nach neuer Klasse Sound Java Basics - Anfänger-Themen 18
O Einlesen einer "config.ini" funktioniert plötzlich nicht mehr ! Java Basics - Anfänger-Themen 10
G Immer mehr Threads beim Selbstaufruf der main-Methode Java Basics - Anfänger-Themen 3
P Java Anwendung mit mehr RAM starten?? Java Basics - Anfänger-Themen 5
N Kann keine Java-Programme mehr schreiben Java Basics - Anfänger-Themen 10
H ObjectOutputStream - mehr als nur ein Objekt ausgeben Java Basics - Anfänger-Themen 2
I Datenbank - nach erster Verbindung keine Verbindung mehr Java Basics - Anfänger-Themen 3
L JPanel vergrößern bis JScrollPane nicht mehr zu sehen Java Basics - Anfänger-Themen 7
C DecimalFormat-Patern funktioniert ab 11 Stellen nicht mehr Java Basics - Anfänger-Themen 3
V Warten bis die Länge eines Strings nicht mehr 0 ist Java Basics - Anfänger-Themen 13
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
Haave EAN-13-Prüfziffer: Vermeiden von Eingaben mit mehr/weniger als 12 Ziffern Java Basics - Anfänger-Themen 3
D brauch hillfe komm nicht mehr weiter... Java Basics - Anfänger-Themen 10
G methodenvorschläge bei Punktnotation kommen nicht mehr !! (Eclipse) Java Basics - Anfänger-Themen 5
B Objekt wird nicht mehr gezeichnet Java Basics - Anfänger-Themen 2
M MouseListener funktioniert in jar-file nicht mehr Java Basics - Anfänger-Themen 13
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
Q mehr Leistung durch Threads Java Basics - Anfänger-Themen 4
N mehr Dimensionalen Array beschreiben Java Basics - Anfänger-Themen 13
X Robot geht nicht mehr (Ubuntu 9.10) Java Basics - Anfänger-Themen 2
L Mehr als zwei Threads synchronisieren Java Basics - Anfänger-Themen 7
S Mein Computer kennt "javac" und "java" nicht mehr! Java Basics - Anfänger-Themen 6
C Bild wird nicht mehr gefunden Java Basics - Anfänger-Themen 2
T repaint wir nicht mehr geöffnet! Java Basics - Anfänger-Themen 38
V Programm Lädt nicht mehr . Java Basics - Anfänger-Themen 7
R Jar Datei läuft auf neuem Rechner nicht mehr Java Basics - Anfänger-Themen 15
D Brauche mehr Flexibilität bei der Realisierung und weiss nicht wie ich das mache. Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben