Array von je einem String und einem Double

Jellysheep

Erfahrenes Mitglied
Hi,
ich möchte, dass ich ein Array (oder Ähnliches) habe, in dem auf jeder Position ein Double und ein String gespeichert wird.
Man kann jetzt ein String-Array und ein Double-Array erzeugen und jeweils auf das gleiche Element zugreifen, aber geht das nicht auch schöner?

Gibt es in Java eigentlich auch etwas, mit dem man ähnlich wie in Flash (und auch in C++ glaube ich) folgendes machen kann:
Java:
Object o = new Object();
o["abc"] = 5;
System.out.println(o.abc);
 

zeja

Erfahrenes Mitglied
Ne Map wäre ne Idee:

Java:
Map<String,Double> map = new HashMap<String,Double>();
map.put("abc",5.0);
Double value = map.get("abc");
System.out.println(value);
 

Jellysheep

Erfahrenes Mitglied
Ich brauche das Ganze für Folgendes:
Ich habe ein Programm, das Daten einer Klasse mit Serializable speichert ect. und möchte jetzt so etwas wie eine Zurück-Funktion einbauen. In dieser Klasse sind mehrere Double-Werte, und wenn einer davon in einem Fenster geändert wird, soll das registriert und evtl. später "widerrufen" werden. Ich brauche jetzt also ein Array mit fester Reihenfolge, das den Namen oder eine Identifikations-Nummer und den zugehörigen Wert speichert.
Ich mache es jetzt aber mit einem Integer- und einem Double-Array, ungefähr so:
Java:
int[] idChanged = new int[100];
double[] valueChanged = new double[100];
...
void change(int id, double value){
    for(int i = 99; i>0; i++){
        idChanged[i] = idChanged[i-1];
        valueChanged[i] = valueChanged[i-1];
    }
    idChanged[0] = id;
    valueChanged[0] = value;
}
 

vfl_freak

Premium-User
Moin,

aha ... und was genau funktioniert daran nicht?
Sieht doch auf den ersten Blick ganz ok aus ;)

Gruß
Klaus

EDIT:
bis auf auf Deine FOR-Schleife natürlich ...
Du startest bei 99 und erhöhst dann i solange, bis i > 0 ist (!)
Also etwa so
Java:
for( int i = 0; i <= 99; i++ )
// oder 
for( int i = 99; i >= 0; i-- )
 
Zuletzt bearbeitet:

zeja

Erfahrenes Mitglied
Nimm nie zwei Arrays um zwei zusammengehörigen Werte zu speichern. Das allein an der Position festzumachen ist wirklich nicht schön.

In dem Fall machst du dir eine neues Klasse die beide Werte aufnehmen kann:

Java:
public class IdValuePair {

    private int id;
    private double value;

    public IdValuePair(int id, double value) {
        this.id = id;
        this.value = value;
     }

    public int getId() {
         return this.id;
    }

    public int getValue() {
         return this.value;
    }

}

Dann kannst du ein Array von IdValuePair machen.
 

Jellysheep

Erfahrenes Mitglied
@vfl_freak: Ja, danke! Ich hab es im Programm dann auch gemerkt, als eine IndexOutOfBoundsException kam. :D

@Zeja: Dankeschön! Genau so etwas hab ich gesucht, wie blind man doch sein kann! ;)
Die getValue-Methode müsste dann aber einen Double-Rückgabewert haben.