2013-07-11 6 views
1

아주 간단한 프로그램을 실행하려고하는데, 중첩 목록과 맵을 선언하는 기본 사항에 대해 고민하고 있습니다.어떻게 Java로 여러 ArrayLists/Maps를 적절하게 중첩합니까?

나는 다항식을 ArrayList에 저장해야하는 프로젝트를 진행하고 있습니다. 각 다항식의 이름이 지정되므로 키/값 맵에서 다항식의 이름 (1, 2, 3 등)을 키로, 실제 다항식을 값으로 사용하겠습니다.

이제 실제 다항식에는 지수 값이 계수와 관련되어 있어야하기 때문에 키 값이 필요합니다.

다항식 : 1 : 2 배 배열 목록지도로 전체를 포함^3

및지도

그래서 예를 들어 나는 첫 번째는 간단 말, 다항식의 ArrayList를 필요 키를 포함합니다 : 다항식 1과 값 :은 2와 3이 키/값인 Map입니다.

내가 가지고있는 코드는 아래에 있지만 중첩 논리를 형식화하는 방법에 대해서는 100 %가 아닙니다.

public static void main(String[] args) throws IOException{ 
     ArrayList<Map> polynomialArray = new ArrayList<Map>(); 
     Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>(); 
     String filename = "polynomials.txt"; 
     Scanner file = new Scanner(new File(filename)); 

     for(int i = 0; file.hasNextLine(); i++){ 
      //this will eventually scan polynomials out of a file and do stuff 

     } 

편집 : 여전히 문제가,지도에 키/값을 업데이트했습니다.

위의 코드는 나에게 다음과 같은 오류를주고있다

:

Cannot instantiate the type Map<String,Map<Integer,Integer>> 

그래서 나는이 일을 가야합니까 아니면 그냥이 모든 길을 잘못에 대해 갈거야 그러면 어떻게?

+0

당신은'목록을 찾고 계십니까 <정수, 맵 <정수, 맵 <정수, 정수 >>'? – NINCOMPOOP

+0

ArrayList >> 원본 ArrayList에는 키/값이 필요하지 않습니다. – leigero

+0

그러면 ArrayList >>' 지도에는 키 - 값 쌍이 있습니다. – NINCOMPOOP

답변

2

당신은 new Map<String, Map<Integer, Integer>>()을 인스턴스화 할 수 없습니다. 타이핑을 저장 당신이 자바 7 사용하고있는 이상, 당신은 generic type inference를 사용할 수 있는지,

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<String, Map<Integer, Integer>>(); 

을 또한 : 당신은 java.util.HashMap 같은 구체적인 유형을 사용할 필요가

Map<String, Map<Integer, Integer>> polynomialIndex = new HashMap<>(); 
+0

그래, 고마워. 방금 그걸 깨달았다. 나는 그 모든 것이 의미하는 바를 결코 완전히 확신하지 못했지만 이제는이 문제를 직접 경험하게 됨으로써 더 의미를 갖기 시작했다. – leigero

1

이 잘못된 :

Map<String, Map<Integer>> polynomialIndex = new Map<String, Map<Integer>>(); 

지도는 두 개의 매개 변수가 필요하고 중첩 된지도 Map<Integer>은 하나가 있습니다.

Map<String, Map<Integer, Integer>> polynomialIndex = new Map<String, Map<Integer, Integer>>(); 

아니면 최고의 별도 수행 할 수 있습니다 : 당신이 뭔가를 찾고 생각합니다. 이와

Map<String, Map> polynomialIndex = new Map<String, Map>(); 
Map<Integer, Integer> polynomialNumbers = new Map<Integer, Integer>(); 

당신은 다음 polynomailNumbers지도에 숫자를 넣어 polynomialIndex에 그것을 사용할 수 있습니다. java.util.Map인터페이스 (이 생성자가없는) 때문에

+0

나는 그뿐만 아니라 시도했지만 오류가 발생합니다 : Map > 형식을 인스턴스화 할 수 없습니다. – leigero

+0

지도가 분리되어 편집되었을 수 있습니다. –

관련 문제