# Array wird nur als Speicheraddresse ausgegeben



## Miramizu (21. Jan 2011)

Hallo ich war mir jetzt nicht sicher, ob das Thema hier rein passt, oder doch besser zu den Basics sollte, weil sich das Problem ja klein anhört, aber ich kriege es einfach nicht gelöst und ich schätze, dass es ein kleiner Fehler ist.

Aufgabe ist eine Klasse SLL(Single Linked List) mit einigen Methoden zu erstellen. Eine davon soll die Liste in einen Array umwandeln (toArray()).

Klappt alles ganz wunderbar, nur irgendwie bekommen ich beim Ausdruck nur die Speicheradresse. Woran liegt das nur?

Hier der Codeausschnitt: 


```
public int[] toArray() {
		int size = size();
		int[] array = new int[size];
		Node pointer = top;
		int counter = 0;

		while (pointer.getNext() != null) {
			array[counter] = pointer.getNext().getData();
			counter++;
			pointer = pointer.getNext();
		}
		return array;					// gibt Speicheradresse zurück :-(
	}
}
```

Wenn ich dann in der Anwendungsklasse die erstellte Liste versuche auszudrucken mit:

```
System.out.println(list.toArray());
```

gibt er wie gesagt nur die Speicheradresse zurück. an der size methode kanns nicht liegen und auch die getNext methode und alles funktioniert einwandfrei.

Würde mich sehr über jegliche Hilfe freuen 

LG


----------



## tfa (21. Jan 2011)

Das ist halt so bei Arrays. 
Schau dir die Methode Arrays.toString(...) an. Ich vermute, das ist das was du suchst.


----------



## Andi_CH (21. Jan 2011)

Miramizu hat gesagt.:


> gibt er wie gesagt nur die Speicheradresse zurück. an der size methode kanns nicht liegen und auch die getNext methode und alles funktioniert einwandfrei.



Nein, das ist nicht die Adresse, das ist der Hashcode - hilft dir das weiter? 
(Nicht böse sein, ist bald Freitag abend da bin ich meistens so)

Eigentlich gehört das hier in die FAQ (Gibts sowas überhaupt, wird das überhaupt angeschaut?)


----------



## tfa (21. Jan 2011)

Andi_CH hat gesagt.:


> Nein, das ist nicht die Adresse, das ist der Hashcode - hilft dir das weiter?
> (Nicht böse sein, ist bald Freitag abend da bin ich meistens so)
> 
> Eigentlich gehört das hier in die FAQ (Gibts sowas überhaupt, wird das überhaupt angeschaut?)



Ganz oben, das erste Unterforum:
http://www.java-forum.org/java-faq-beitraege/8431-ubersicht-faq.html

Du kannst ja mal einen FAQ-Beitrag verfassen...


----------



## Miramizu (21. Jan 2011)

nein, es funktioniert einfach nicht... ich gebs auf, danke für die hilfe... falls jemand noch irgendwie helfen kann bitte schreiben... kA worans liegt...


----------



## eRaaaa (21. Jan 2011)

Miramizu hat gesagt.:


> nein, es funktioniert einfach nicht... ich gebs auf, danke für die hilfe... falls jemand noch irgendwie helfen kann bitte schreiben... kA worans liegt...



Tolle Beschreibung --> "funktioniert nicht"

Was hast du jetzt genau ausprobiert? Deine Methode liefert ein int-Array, das kann man ganz normal, wie tfa scho sagte mit

```
System.out.println(Arrays.toString(deinObjekt.toArray()));
```

ausgeben...
Dann kommt eben so etwas wie [1,2,3,45] bei raus.
Ansonsten, kann man ja auch immer noch selbst über das Array iterieren mit einer for-Schleife und die einzelnen Integer ausgeben, oder sich wie Arrays.toString mit dem StringBuilder den String zusammenbauen!


----------



## Miramizu (21. Jan 2011)

Die letzten beiden Möglichkeiten konnte ich einfach nicht programmieren, das fällt mir einfach noch zu schwer... und deine einfache Methode funktioniert, vielen Dank, ehrlich... 

Ich denke nunmal manchmal einfach viiieeel zu kompliziert... Dauert das lange, bis man so ein Programmieredenken drauf hat?

Danke, ehrlich, für so nen Kram brauch ich manchmal Stunden um draufzukommen...


----------



## Painii (22. Jan 2011)

Abstrahieren und üben, das wird schon...
Dein Beispiel:
Deine Methode nimmt dein Objekt und legt seine Einzelteile in einen Karton(Array).
Wenn du jetzt dein Array ausgibst, sagt dir dein Programm "Karton".
Du willst aber die einzelnen Objekte aus dem Karton haben.
Also, nimm alle Sachen aus dem Karton und gib sie aus.
Das macht die Arrays.toString() .


----------

