2010-12-13 13 views
1

Ich habe ein Problem zu verstehen, wie man ein Array ausgibt, das ich in die Hash-Karte einfüge. (Übrigens muss ich verschiedene Datentypen in die Hash-Map einfügen, einzelne Werte und auch Arrays, das verwende ich den generischen "Object" -Typ).Wie Array von Hash-Karte zu lesen?

Beispielcode:

HashMap map = new HashMap(); 

map.put("two", new int[]{1,2}); 

int[] myArray = new int[2]: 

myArray = (int[])map.get("two"); 

System.out.println("Array value "+myArray[0]); 

System.out.println("Array value "+myArray[1]); 

Ich erhalte eine Fehlermeldung während der Laufzeit ...

Ich hoffe, dass mir jemand einen Tip geben kann. Ich kann meinen Fehler nicht finden.

Vielen Dank. Steffen

+0

Was ist der tatsächliche Fehler? –

+0

Nebenbei möchten Sie vielleicht eine ArrayList im Gegensatz zu einem [] verwenden. Sie können dann Generics usw. verwenden. –

+0

Die Zeile int [] myArray = new int [2]; ist unnötig. Sie ordnen die myArray-Variable mit myArray = (int []) map.get ("two"); neu zu. – Koekiebox

Antwort

1

Problem ist in dieser Zeile:

int[] myArray = new int[2]: 

Änderung es

int[] myArray = new int[2]; 

Andere dann, dass es keine Probleme mit dem Code-Schnipsel.

0

soll Dieser Code funktioniert gut, mit Ausnahme von dieser Zeile:

int[] myArray = new int[2]: 

, die einen Doppelpunkt anstelle ein Semikolon verwendet, und erstellt pointlessly ein neues Array. Vorausgesetzt, Sie sagen, Sie erhalten einen Fehler bei Laufzeit, ich vermute, das ist nicht das Problem - aber es ist schwer zu sagen, da Sie nicht gesagt haben, was der Fehler tatsächlich ist.

Ich würde auch vorschlagen, Generics anstelle des Rohtyps, auch wenn der Werttyp nur Objekt ist. Hier ist ein kurzes, aber vollständiges Programm zeigt es funktioniert:

import java.util.*; 

public class Test { 
    public static void main(String[] args) { 
    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("two", new int[] { 1, 2 }); 
    int[] myArray = (int[]) map.get("two"); 
    System.out.println("Array value " + myArray[0]); 
    System.out.println("Array value " + myArray[1]); 
    } 
} 

Ausgang:

Array value 1 
Array value 2 

Da dieser Code funktioniert, bitte ein kurzes, aber vollständige Programm schreiben, die nicht - oder mindestens uns sagen, was Fehler, den du tatsächlich bekommst.

+0

sollte es nicht Kompilierzeit Fehler in diesem Fall geben? –

+0

@ org.life.java: Ja ... Ich vermute, dass der Code, der gepostet wurde, nicht genau der Code ist, der fehlgeschlagen ist. –

+0

Liebe alle, Sie haben Recht. Der Code funktioniert. Leider musste ich meine Frage schnell posten. Der Fehler ist woanders, ich muss das untersuchen. Vielen Dank und nochmals Entschuldigung. Steffen – Steffen