2010-12-13 3 views
1

해시 맵에 넣은 배열을 읽는 방법을 이해하는 데 문제가 있습니다. (해시 맵, 단일 값 및 배열에 다른 데이터 유형을 넣어야하는 방식으로 일반 "객체"유형을 사용합니다).해시 맵에서 Array를 읽는 방법?

예제 코드 :

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

관련 문제