Länge eines spez. Arrays

Extremefall

Bekanntes Mitglied
Hallo,
ich würde gerne die Länge eines spez. Arrays herausfinden, genauer gesagt eines Stacks. Wisst ihr, wie das geht? Verwendet man dort auch length?

MFG
 

firewarrior

Aktives Mitglied
Also wenn du java.util.Stack meinst, der erbt von java.util.Vector die Methode size()

Edit: kannst auch gerne selbst nachschauen, die API hilft bei so etwas ungemein.
 
Zuletzt bearbeitet:
H

Herr K.

Gast
Hallo Extremfall,

eine Möglichkeit besteht darin, dass Du eine Klasse von Stack ableitest und hier bei jedem Ablegen eines Elements einen Zähler erhöhst und beim Entfernen eben wieder dekrementierst.
Das Problem dabei, nur Exemplare dieser Klasse haben dann eine Angabe der Anzahl der Elemente.

So wie ich die Frage aber eher verstehe möchtest Du die Länge eines existerenden Stapels dieses Typs ermitteln. Es gibt keine solche Eigenschaft (wie Du dem API entnommen hast), also kannst Du die nicht direkt ablesen. Wenn ich Dir einen Stapel Karten in die Hand drücke und sage: "Wie viele sind das?", was machst Du denn da?
Ist hier im Prinzip das gleiche, gar nicht kompliziert denken sondern einfach überlegen was Du machen würdest und dann den Code entsprechend schreiben. Ich gehe davon aus, dass Du die Karten zählen würdest (ich würde es tun um die Menge zu bestimmen).

Jetzt ist es aber nicht ein Stapel, sondern ein Stack. Aus welchem (fiktiven) Grund auch immer kann ich nur genau eine Karte von oben wegnehmen und die ist dann auch nicht mehr auf dem Stapel. Das heißt wenn ich die erste Karte runtergenommen habe, dann kann ich die wegwerfen und weißt nun, dass der Stapel schon mal die Höhe 1 hat plus die Höhe des restlichen Stapels. Beim restlichen Stapel mache ich so weiter und erhöhe die Zahl um eins. Ist natürlich ein endlicher Stapel, also ist der ja irgendwann leer und ich weiß wie viele Karten da lagen. Zählen ist also geschafft.

Das Problem ist jetzt aber, dass alle Karten weg sind. Das ist aber eher doof, ich wollte schließlich nur dass Du den Stapel für mich zählst, nicht den wegwirfst. Was also kannst Du tun? Richtig, Du packst die Karten sortiert bei Seite. Und bei Karten bietet es sich an, dass Du die stapelst. Also statt die oberste Karte zu nehmen und wegzuwerfen, legst Du die auf einen neuen Stapel (die unterste Karte des neuen Stapels ist also gerade die vorher Oberste). So machst Du weiter und wenn Du fertig bist hast Du die Anzahl der Karten und einen Stapel.

Jetzt haben wir aber immer noch ein Problem, ich habe zwar noch alle Karten und weiß wie viele es waren, aber die liegen jetzt falschrum sortiert und meine Kartentricks klappen nicht mehr. Bin ich also wieder unzufrieden. Was kannst Du tun um mir den Stapel so zurück zu geben wie Du ihn bekommen hast und mir sagen wieviele Karten im Stapel sind? Umdrehen klingt gut und wie Du gerade gesehen hast musst Du nicht mehr dafür tun, als immer das oberste Element eines Stapels zu entnehmen und auf einem anderen Stapel abzulegen.

So blöd das klingt, wenn Dir das noch nicht klar ist, dann nimm Dir einfach ein paar Spielkarten, sortiere die nach dem Wert (z.B. 7<-unten,8,9,10,B,D,K,AS<-oben) und zähl die wie beschrieben, also das AS runter nehmen und 1 zählen, der König ist die zwei, ... und Du hast danach den neuen Stapel (AS <- unten, K, D, B, 10, 9, 8, 7 <- oben) und dann legst Du die wieder von oben nach unten zurück auf den alten Platz.
 

Extremefall

Bekanntes Mitglied
Ich würde einfach eine Instanzvariable dann erzeugen, die mitzählt. So hat man dann die Anzahl der Elemente. Wenn ein Objekt entfernt wird, wird der Wert um 1 subtrahiert. Ich denke, so könnte man es vielleicht lösen.
 

fastjack

Top Contributor
Wenn Du keine neue Klasse erzeugen darfst: Schleife machen. Originalstack abräumen und auf einen neuen Stack packen, dabei pro Element Variable hoch zählen. Am Ende den neuen Stack wieder abräumen und in den Originalstack packen. Fertig, Zählvariable zurückgeben.
 

tagedieb

Top Contributor
Alternativ laesst sich auch die standard Java AccessControl aushebeln und die Daten aus den internen Feldern via Reflection auslesen..

Java:
		Field stackField = Stack.class.getDeclaredField("stack");  //ArrayList welches intern die Daten verwaltet
		stackField.setAccessible(true);  // Zugriff auf 'private' erlauben
		
		Stack stack = new Stack();
		List list = (List) stackField.get(stack); // Zugriff auf die ArrayList
		System.out.println(list.size());
 
H

Herr K.

Gast
Das ist aber schlechter stil.

Das wäre es aber doch auch schon eine solche Klasse zu verwenden, wenn es gute Alternativen gibt (wie java.util.Stack), die mir bereits alles bieten was ich an Funktionalität benötige (eben eine direkte Bestimmung der Anzahl und das Verhalten eines Stacks).

Beim Zentralabitur ist es aber natürlich absehbar, dass der Einsatz von Reflections eher als "Thema verfehlt" gelten dürfte :)
 

fastjack

Top Contributor
Beim Zentralabitur ist es aber natürlich absehbar, dass der Einsatz von Reflections eher als "Thema verfehlt" gelten dürfte

genau das meinte ich ;)

Allerdings ist das Benutzen von Reflections schlechter Stil, wenn ich sie durch Einsatz eines guten Designs vermeiden kann ;)

Das wäre es aber doch auch schon eine solche Klasse zu verwenden

Ich denke der TO hätte den Thread nicht gemacht, wenn er java.util.Stack benutzen dürfte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
A Arrays kombinieren (länge eines Arrays kann 0 sein) Java Basics - Anfänger-Themen 6
O Länge eines Arrays Java Basics - Anfänger-Themen 6
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
L Länge der dritten Dimension eines dreidimensionalen Arraya Java Basics - Anfänger-Themen 1
Z Erste Schritte Einlesen der Länge eines Feldes Java Basics - Anfänger-Themen 25
S Länge eines Elements im String Array Java Basics - Anfänger-Themen 5
S Länge eines zweidimensionalen Feldes Java Basics - Anfänger-Themen 3
E Länge eines Feldes ausgeben Java Basics - Anfänger-Themen 13
V Warten bis die Länge eines Strings nicht mehr 0 ist Java Basics - Anfänger-Themen 13
D prüfen ob länge eines Arrays == 0 Java Basics - Anfänger-Themen 4
B Maximale Länge eines integer Arrays ? Java Basics - Anfänger-Themen 31
J Länge eines long wertes Java Basics - Anfänger-Themen 13
G Länge eines Integers ermitteln? Java Basics - Anfänger-Themen 38
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
B Länge eines Char-Arrays bestimmen Java Basics - Anfänger-Themen 7
B Länge eines JTextFields Java Basics - Anfänger-Themen 3
G Länge eines zweidimensionalen array Java Basics - Anfänger-Themen 2
G länge eines arrays bestimmen Java Basics - Anfänger-Themen 4
R länge eines array? Java Basics - Anfänger-Themen 6
C Länge/Anzahl der Stellen eines Integers Java Basics - Anfänger-Themen 8
D Länge eines Objekt-Arrays Java Basics - Anfänger-Themen 7
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
S Die durchschnittliche Länge der Strings Java Basics - Anfänger-Themen 11
Hzrfa Länge der längsten Kette java Java Basics - Anfänger-Themen 56
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
I Array Länge in Klasse festlegen Java Basics - Anfänger-Themen 1
Csircc Neuer Array mit geringerer Länge und selben werten. Java Basics - Anfänger-Themen 2
P Länge des längsten möglichst klein Java Basics - Anfänger-Themen 2
districon 2D Array - Länge zuweisen Java Basics - Anfänger-Themen 1
t2im Java Array-Länge ändern? Java Basics - Anfänger-Themen 22
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
L Zwei sortierte Subarrays mit gleicher Länge zusammenfügen Java Basics - Anfänger-Themen 2
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
M Die länge von char Java Basics - Anfänger-Themen 6
A Best Practice Undefinierte länge bei arrays Java Basics - Anfänger-Themen 4
E Array-list mit einer bestimmten Länge Java Basics - Anfänger-Themen 17
T Länge einer Textdatei Java Basics - Anfänger-Themen 11
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
N Array mit unbestimmter länge Java Basics - Anfänger-Themen 12
T String länge messen in mm Java Basics - Anfänger-Themen 1
M Generierter Tannenbaum - String Länge Java Basics - Anfänger-Themen 1
T String/int länge Java Basics - Anfänger-Themen 2
I Länge von mehrdimensionalen Array Java Basics - Anfänger-Themen 5
A Länge Substring Java Basics - Anfänger-Themen 1
D Zweidimensionales Array (Länge) Java Basics - Anfänger-Themen 2
S Listnode Länge Java Basics - Anfänger-Themen 2
shiroX Input/Output Array erstellen / Länge Java Basics - Anfänger-Themen 3
G Erste Schritte berechne länge von einträgen Java Basics - Anfänger-Themen 5
S Länge einer Zahl Java Basics - Anfänger-Themen 18
C Datentypen Array-Einträge überhalb der Array-Länge - welcher Wert? Java Basics - Anfänger-Themen 5
M Strings mit variabler Länge auffüllen Java Basics - Anfänger-Themen 6
J Alle Wörter der Länge n mit 0 und 1 Java Basics - Anfänger-Themen 17
C Datentypen Array mit dynamischer Länge? Java Basics - Anfänger-Themen 14
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
P länge von array abfragen? Java Basics - Anfänger-Themen 2
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
M Länge String Java Basics - Anfänger-Themen 3
A Länge einer Hexadezimalzahl in Bits Java Basics - Anfänger-Themen 40
P String- Länge Java Basics - Anfänger-Themen 3
A Klassen Eigene Datenklasse - Strings mit fixer Länge Java Basics - Anfänger-Themen 2
Gossi Datentypen Länge von Zahlentypen Java Basics - Anfänger-Themen 3
G Array mit zufälliger Länge Java Basics - Anfänger-Themen 4
S Datentypen String mit fester Länge (Rückgabewert einer Methode) Java Basics - Anfänger-Themen 2
D Array anlegen ohne bekannte Länge? Java Basics - Anfänger-Themen 6
S ArrayList länge lässt sich nicht voreinstellen Java Basics - Anfänger-Themen 10
F String begrenzte Länge??? Java Basics - Anfänger-Themen 16
N List länge Java Basics - Anfänger-Themen 6
DStrohma Binärwörter der Länge n ausgeben Java Basics - Anfänger-Themen 3
A array und seine länge Java Basics - Anfänger-Themen 5
G länge von string, string aus integer/char Java Basics - Anfänger-Themen 6
G Länge einer Enumeration feststellen Java Basics - Anfänger-Themen 15
T Länge von Strings im Array vergleichen Java Basics - Anfänger-Themen 2
N Array bei unbekannter Länge Java Basics - Anfänger-Themen 4
M unerklärbarer Fehler bei Array-Länge Java Basics - Anfänger-Themen 4
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
G Warum hat char die Länge 2? Java Basics - Anfänger-Themen 9
B JTable - Einstellen der Größe bzw. der Länge Java Basics - Anfänger-Themen 1
J Char-Array mit variabler Länge zurückliefern. Java Basics - Anfänger-Themen 11
G Keine feste Länge bei Objekten, warum nur Zeiger? Java Basics - Anfänger-Themen 8
F ArrayList Länge ermitteln und ausgeben Java Basics - Anfänger-Themen 13
M länge von wörtern betimmen Java Basics - Anfänger-Themen 20
NightmareVirus Länge einer Integerzahl bestimmt Java Basics - Anfänger-Themen 6
B 2D Punkte erstellen und ihre Länge berechnen/Problem this. Java Basics - Anfänger-Themen 3
L String konstante Länge? Java Basics - Anfänger-Themen 4
R maximale Länge des INHALTS im JTextField Java Basics - Anfänger-Themen 2
R String[][] mit variabler länge Java Basics - Anfänger-Themen 4
G länge einer audiodatei herausfinden Java Basics - Anfänger-Themen 3
M Maximale String länge finden? Java Basics - Anfänger-Themen 8
G Array-Länge bei Erzeugung noch unbekannt - wie erzeugen? Java Basics - Anfänger-Themen 12
J Arrays mit unbekannter Länge Java Basics - Anfänger-Themen 2
B String aus Datei lesen + Länge berechnen Java Basics - Anfänger-Themen 2
N Ermitteln der Spaltenbreite => DATE-Spalte hat Länge 8 ?! Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben