2016-08-06 5 views
1

자바의 arraylist에 트리 맵을 추가하고 싶습니다.루프의 TreeList를 ArrayList에 추가

ArrayList al=new ArrayList(); 
    for(int i=0;i<n;i++) 
    { 
     al.add(new TreeMap()); 
    } 

을 나는 트리 맵에 키 값 쌍을 추가하려고 할 때 :

for(int i=0;i<n;i++) 
    { 
     for(int j=i+1;j<n;j++) 
     { 
      al.get(i).put(j,(arr[j]-arr[i])); 
     } 
    } 

컴파일러는이에 오류가 있습니다 : error description

누군가가 도움을 주시기 바랍니다 수 있습니다 여기에 내가 뭐하는 거지입니다 나를 .... 고마워.

이 질문은 What is a raw type and why shouldn't we use it?과 다릅니다. 여기에서는 원시 형식이나 제네릭에 대한 설명을 요구하지 않았으므로 오류 해결 방법을 묻습니다.

답변

1

제네릭을 사용해야합니다.

ArrayList<TreeMap> al=new ArrayList<TreeMap>(); 
for(int i=0;i<n;i++) 
{ 
    al.add(new TreeMap()); 
} 

또는 캐스팅을해야합니다. 제네릭 더 나은 옵션입니다.

설명 : ArrayList al=new ArrayList();은 개체의 배열 목록을 의미합니다. 그러나지도에 키 값 쌍을 추가하려고하면 먼저 개체를 개체 유형으로 가져오고 이것이 개체 유형입니다. 이를 트리 맵으로 사용하려면 TreeMap으로 변환해야합니다.

ArrayList<TreeMap> al=new ArrayList<TreeMap>();을 사용하면 배열 항목을 가져 오는 동안 TreeMap을 직접 가져옵니다.

+0

내 문제가 해결되었습니다. 고마워 :) 이제 오류가 없다. – KCK

+0

@James_D 그게 무슨 문제 야. 원시 맵 유형은 키와 값으로 모든 객체를 가져올 수 있음을 의미합니다. –

+0

아, 그래, 좋아. Map 를 지정하지 않고'put (...) '메소드에 제공되는 int를 autobox하지 않을 것이라고 생각했습니다. 그래도 원시 타입을 사용하는 것은 여전히 ​​나쁜 습관이다 (또한 컴파일 타임 타입에 대한 구현 유형을 사용하는 것도). –