2010-12-13 6 views
1

私は、ハッシュマップに入れた配列をどのように読み出すかを理解する上で問題があります。 (私はハッシュマップ、単一の値と配列に別のデータ型を入れる必要がありますが、私は汎用の "Object"型を使用しています)。配列をハッシュマップから読み取る方法?

コード例:

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]); 

私は、実行時にエラーが発生します...

私は誰かが私にヒントを与えることができることを望みます。私は間違いを見つけることができません。

ありがとうございます。 ステファン

+0

実際のエラーとは何ですか? –

+0

[]とは対照的に、ArrayListを使用することもできます。 Genericsなどを使用することができます。 –

+0

行int [] myArray =新しいint [2];不要です。 myArray =(int [])map.get( "two");を使用してmyArray変数を再割り当てしています。 – Koekiebox

答えて

1

問題は、この行の範囲内である:スニペットに問題がないこと、その後他の

int[] myArray = new int[2]; 

int[] myArray = new int[2]: 

変更を。

0

すなわちコードがこの行を除いて、正常に動作する必要があり:

int[] myArray = new int[2]: 

代わり半結腸の結腸を使用し、無駄に新しいアレイを作成します。 ランタイムでエラーが発生するとすれば、これは問題ではないと思われますが、実際に何がエラーではないかを言えば、言い難いです。

値の型がObjectの場合でも、生の型ではなくジェネリックを使用することをお勧めします。ここで働くことを示す短いが完全なプログラムです:

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]); 
    } 
} 

出力:

Array value 1 
Array value 2 

そのコードが動作することを考えるには、失敗した短いが、完全なプログラムを投稿してください - または少なくとも私たちに何を教えてあなたが実際に得ているエラー。

+0

この場合、コンパイル時エラーが発生しませんか? –

+0

@ org.life.java:はい...私は、投稿されたコードがまさに失敗したコードではないと思われます。 –

+0

親愛なるすべて、あなたは正しいです。コードが動作しています。残念ながら私は速やかに質問を投稿しました。バグはどこかにある、私は調査する必要がある。ありがとう、もう一度申し訳ありません。ステファン – Steffen

関連する問題