2014-01-08 1 views
-1

아래 코드에서 무엇이 잘못되었는지 말해 줄 수 있습니까?HashMaps의 ArrayList를 사용합니다

"java.lang.IndexOutOfBoundsException : 인덱스 : 0, 파일 크기 : 0"나는 시도 후 첫 번째 줄에 아래의 코드를 실행하면 {다음과 같은 오류 발생

public static class ASIFFile { 
      private ArrayList<HashMap<String,String>> data; 
      private static int currRec = 0; //assign each record a numeric id based on this figure. 

      // Method for reading ADIFfile 
      public ArrayList<HashMap<String,String>> ReadASIFfile (File DataFile) {  
       data = new ArrayList<HashMap<String, String>>(500); 

       try { 
         HashMap<String, String> temp = new HashMap<String,String>(10); 
         data.set(currRec, temp);       
         (data.get(currRec)).put("recID", Integer.toString(currRec));//give the record a numeric ID 


... 
+1

두 번째 줄은 세미콜론으로 짖습니다. – Eich

+0

@Eich 아, 실수로 텍스트 상자에 복사했습니다. 실제로 코드에있었습니다. – Adam

답변

2

케빈이 언급했듯이, 당신은 결코 당신의 ArrayList에 아무것도 넣지 않습니다. 귀하의 코드는 다음과 같아야합니다.

data = new ArrayList<HashMap<String, String>>(500); 

try { 
    //give the record a numeric ID 
    data.add(currRec, temp); 

이전 솔루션에서는 data.set (currRec, temp);를 호출했습니다. 여기에는 ArrayList의 위치 currRec에 HashMap 요소가 있다고 가정합니다. 아직 ArrayList에 아무것도 넣지 않으면 currRec 요소가 없습니다.

+0

도움을 주셔서 감사합니다, 문제는 내가 data.add 대신에 data.set을하고 있다는 것이 었습니다! – Adam

6

당신은 아무것도 추가하지 귀하 ArrayList. ArrayList입니다.HashMaps이지만 현재 비어 있습니다. 색인을 사용하기 전에 사용하려는 색인에 새 HashMap을 추가해야합니다.

+0

'HashMap temp = new HashMap (10)으로 변경했습니다. \t \t \t \t \t data.set (currRec, temp); \t \t \t (data.get (currRec)). put ("recID", Integer.toString (currRec));하지만 여전히 문제가 있습니다. 다른 제안이 있으십니까? – Adam

+0

@ Adam, 코드를 [SSCCE] (http://sscce.org) 형식으로 게시 할 수 있습니까? –