variablenname errechnen

  • Themenstarter Themenstarter Hzzbjdbirufd
  • Beginndatum Beginndatum
H

Hzzbjdbirufd

Gast
Hallo,
ist es möglich, einen variablennamen zu errechnen?
heißt ich habe eine Zahl, z.b. 5 und möchte eine Variable, die den Wert im Namen hat

Wert5

Sinn des ganzen ist, ich möchte mehrere Variablen so erstellen (Wert5, Wert6, Wert7, ...). Ich habe erst an ein Array gedacht, um das Problem zu lösen, nur wenn ich das für viele Variablen (>100000000) reicht das Array nicht.

Vielen dank euch
 
Das könntest du bestimmt irgendwie über Reflections hinkriegen, aber damit wirste wohl nicht glücklich werden 🙂
Du könntest eine Map<String, Integer> verwenden in der du deine Werte ablegst. Dann kannst du mit ner Schleife über das keyset laufen und prüfen ob der name deinem kriterium entspricht.
 
Nein, das geht nicht (afaik). Ein Bezeichner/Name ist eine Metainformation, die du nicht programmieren kannst.

Für eine Liste mit variabler Länge könntest du aber eine ArrayList (in java.util) verwenden.
 
Hallo,

variable Variablen gibt es in Java nicht!

... Ich habe erst an ein Array gedacht, um das Problem zu lösen, nur wenn ich das für viele Variablen (>100000000) reicht das Array nicht.

Wieso sollte ein Array nicht reichen? Oder anderum gefragt, wieso sollte es gehen, wenn Du 100 Mio einzelne Variablen hast?
Mal ganz davon abgesehen, dass mir ernsthaft die Frage nach der Sinnhaftigkeit des Unterfangens kommt 😉
Was genau willst Du denn mit dieser Unmenge an Variablen erreichen? Da gibt es sicherlich bessere Ansätze.
 
Weil die Arrayplätze über ints angesprochen werden, daher is nen array auf Integer.MAX plätze begrenzt.

EDIT:

Dafür gilt selbiges.

Stimmt!

Aber um es logisch zu umgehen ist es ja noch einfacher ^^ :
Java:
ArrayList<ArrayList<(String/Integer)>

Die 2. ArrayList steht immer jeweils für 1000plus!!!

Man teilt also die ArrayList, in weitere ArrayLists, die immer jeweils tausend Strings/Integer beinhalten.

ENDE GELÄNDE! 😀
 
Weil die Arrayplätze über ints angesprochen werden, daher is nen array auf Integer.MAX plätze begrenzt.

Hmm, ja okay, das habe ich im Eifer des Gefechts nicht berücksichtigt, wobei 100 Mio noch keinerlei Probleme darstellt, da die Grenze bei einem signed int erst bei ~2,1 Mrd ist.
Desweiteren würde es mich interessieren, was denn passiert, wenn in einer Klasse mehr als Integer.MAX lokale Variablen deklariert sind (mal ganz unabhängig vom Speicherbedarf) 😉

Wie auch immer, ich bleibe dabei, dass man den grundsätzlichen Ansatz hinterfragen sollte.
 
Desweiteren würde es mich interessieren, was denn passiert, wenn in einer Klasse mehr als Integer.MAX lokale Variablen deklariert sind (mal ganz unabhängig vom Speicherbedarf) 😉
Grundsätzlich könntest du Variablen definieren bis der Speicher voll ist, bzw. der Stack auf den Heap trifft ;-) Es gibt da aber sicherlich Barrieren auf verschiedenen Levels. Zum einen ist wie bereits erwähnt ein Java-Array mit int definiert, zum anderen darf deine Applikation nur beschränkt Memory verwenden, sonst gibts eine OutOfMemory Exception (Increase heap size in Java to prevent java.lang.OutOfMemoryError)

Wieso sollte eine Klasse durch Integer.MAX_VALUE beschränkt sein? Von einer kompilierten Klasse kannst du mit "javap -c" den Assembler Code anschauen. Dort kannst du sehen wie Variablen genau verwendet werden.
 
Wieso sollte eine Klasse durch Integer.MAX_VALUE beschränkt sein? Von einer kompilierten Klasse kannst du mit "javap -c" den Assembler Code anschauen. Dort kannst du sehen wie Variablen genau verwendet werden.
Eine Klasse nicht (ich meine mal gehört zu haben, dass .class-Dateien nicht größer als 64k werden dürfen, aber da bin ich mir nicht sicher), der Index von Arrays und Listen ist jedoch ein int und damit auf diesen Wertebereich beschränkt.
Ansonsten klingt das nach verkorksten Design - was soll man mit einer Klasse mit 100 Millionen Attributen? Verwalten lässt sich das doch wohl nicht mehr...
 

Neue Themen


Zurück
Oben