2013-06-05 3 views
0

지도에 포함 된 목록에 저장된 일부 요소에 액세스하려고합니다. 지도의 키는 두 배입니다. 내가 접근하려고 시도하는 목록에는 double과 map이 모두 들어 있습니다. 아래 코드는 목록에 포함 된지도에 액세스하는 것뿐만 아니라 목록에 두 번 저장하려고 시도한 것입니다. 아래 코드에는 해결 방법을 모르는 3 가지 오류가 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.지도에 포함 된 목록의 요소에 액세스하는 방법?

private Map<Double,List<Object>> prediction = new HashMap<Double,List<Object>>(); 

// previous is a double that the user inputs 

if(prediction.containsKey(previous)){ 
     List<Object> l1 = new ArrayList<>(); 
     l1.add(0,(double)l1.get(0)+1.0); // add double 1 at index 0 
     Map<Double,Double> m2 = new HashMap<Double,Double>(); 
     l1.add(m2); // add map to list at index 1 
     prediction.put(previous,l1); 
} 
public double predict(double value){ 

    if (prediction.containsKey(value)){ 
     double total = prediction.get(value).get(0); //ERROR can't convert Object to double 
     Map items = prediction.get(value).get(1); //ERROR can't convert Object to Map   
     for (double i=0; i<=items.size();i++){ //iterate through Map 
      double a = items.get(i)/total; //ERROR can't divide object by double 
        } 
      } 
} 
+1

사용 '목록 '이 아닌'목록 '. –

+0

목록에 double과 map이 모두 들어 있습니다. –

+2

@jjohnst : 확실한 코드 냄새입니다. 형식이없는'List' 안에 모든 것을 유지하는 것이 아니라'double' 필드와'Map' 필드를 가진 타입을 갖는 것이 훨씬 더 효과적 일 것 같습니다. –

답변

1

prediction.get(value)List<Object>을 반환합니다. 두 번째로

double total = ((Double)prediction.get(value).get(0)).doubleValue(); 

같은 : 당신은지도 캐스팅해야합니다 : 당신이 Double에 캐스팅 및 이중 값을 추출해야합니다 그래서 prediction.get(value).get(0)는이 Object 반환

Map items = (Map)prediction.get(value).get(1); 

을 그리고에 대해 동일 사람 3 :

double a = ((Double)items.get(i)).doubleValue()/total; 
0

테스트되지 않은,하지만 난 당신이 값을 캐스팅 할 수 있다고 생각 :

if (prediction.containsKey(value)){ 
    double total = (Double) prediction.get(value).get(0); 
    Map items = (Map) prediction.get(value).get(1); 
    for (double i=0; i<=items.size();i++) { 
     double a = ((Double) items.get(i))/total; 
    } 
} 

그러나 이것은 매우 깨끗 코드 스타일이 아니다. 지도를 두 개의지도로 나누십시오. Double이 포함 된지도와지도가 포함 된지도

+0

그래, 좋은 형태가 아니기 때문에 캐스팅을 피하려고했지만 작동하지 않습니다. 나는 그것을 위로 나눌 것이다. 이 코드는 1000 번 실행되는 루프에 있기 때문에 객체를 많이 생성하지 않으려 고합니다. –

관련 문제