Index eines Arrays für einen Wert bekommen
lima-city → Forum → Programmiersprachen → Java
array
code
eigene schleife
element
erstellen
februar
frage
funktionieren
http
index
inhalt
liste
methode
schleife
schleifen
string
suche
url
verwenden
wechsel
-
Hallo, bei dieser Frage geht es darum den Index eines Arrays für einen bestimmten Wert zu ermitteln. Nehmen wir folgendes Arraybeisiel an.
String[] months = new String[]{"Januar", "Februar",..., "Dezember"}
Gegeben sei ein Wert z.B. "Februar", für den ich die Position im Array bestimmen möchte (Das wäre in diesem Fall die "1").
Ich möchte es vermeiden jeden einzelnen Wert im Array mit meinem String zu vergleichen, dh. ich suche einen Weg ohne For-Schleife. Hat jemand eine Idee?
Beitrag zuletzt geändert: 9.12.2011 14:18:20 von pixilab -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
snix schrieb:
jo kannste.
schleife, n=0 durchrattern bis "wort" == "februar" und dann einen counter, der bei 0 anfängt.
falls es nicht hilft, sag ichs dir nachher ausführlicher.
[...] dh. ich suche einen Weg ohne For-Schleife.
Du beschreibst doch genau das, was er nicht möchte -
jo hast recht war mist, hab mich auf die for schleife, gestützt, aber er wird gar keine schleife haben wollen.
musste per hashtabelle machen (naja bei den kleinen arrays viel zu aufwendig) oder sortieren und nen effizienteren suchalgorithmus verwenden (auch für sonen array viel zu aufwendig).
Beitrag zuletzt geändert: 9.12.2011 15:50:18 von snix -
Bei asList() wird aber ein extra Object auf dem Heap gebastelt, was bei regelmäßigen Aufrufen eher inperformant ist.
Ich zweifle auch, dass das ohne Schleifen gelöst ist.
Ich hab mir die Mühe gemacht und mal nachgeschlagen: Es wird in Version 6 zumindest mit einer Schleife gemacht. Deshalb lieber die Methode wechseln.
Beitrag zuletzt geändert: 9.12.2011 17:44:59 von reimann -
reimann schrieb:
Ich hab mir die Mühe gemacht und mal nachgeschlagen: Es wird in Version 6 zumindest mit einer Schleife gemacht. Deshalb lieber die Methode wechseln.
Rein technisch wird das garnicht anders funktionieren können - egal ob man eine eigene Schleife schreibt oder eine Methode verwendet, die dann eine Schleife dafür verwendet. -
trueweb schrieb:
reimann schrieb:
Ich hab mir die Mühe gemacht und mal nachgeschlagen: Es wird in Version 6 zumindest mit einer Schleife gemacht. Deshalb lieber die Methode wechseln.
Rein technisch wird das garnicht anders funktionieren können - egal ob man eine eigene Schleife schreibt oder eine Methode verwendet, die dann eine Schleife dafür verwendet.
Ja aber er erstellt aus dem Array erstmal noch eine List, was mindestens die Zeit zum erstellen eines neuen Objektes braucht und da er scheinbar jedesmal noch eine extra Liste erstellt wird das mit der Zeit sehr rechenlastig. -
Falls die Frage noch aktuell ist könnte man versuchen eine einfach verkette Liste aus dem Array zu erstellen und diese dann zu durchlaufen. Dies könnte ohne "wirkliche" Schleife passieren.
class verListElem{
int Index;
Inhalt inhalt;
verListElem next;
}
Dann gehen wir vom einen auf das nächste Element verwiesen und so kann man die Liste durch gehen, aber naja vorher die Datenstruktur zuändern und auch die einfachverkettete Liste sind beide nicht sehr effizient.
Beitrag zuletzt geändert: 30.12.2011 13:58:21 von snix -
wtf?! Es ist ja mal sowas von egal, wie man das Array jetzt iteriert, darum geht es doch auch gar nicht.. Der TS sucht einen Suchalgorithmus, welcher nicht alle Elemente linear behandeln muss (Stichwort: http://de.wikipedia.org/wiki/Lineare_Suche). Das ist bei nicht sortierten Arrays aber schlichtweg nicht möglich.
EDIT:
Sollte das Array sortiert sein, gibt es folgende Möglichkeiten:
- http://de.wikipedia.org/wiki/Interpolationssuche
- http://de.wikipedia.org/wiki/Bin%C3%A4re_Suche
Beitrag zuletzt geändert: 1.1.2012 19:30:24 von spuglisi -
Eine hilfe hierbei währe vielleicht ein ENUMERATE zu verwenden
diese haben Werte (getValue, values)
gut: man kann es bei switch-anweisungen verwenden
mfg jongleur -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage