2017-05-07 1 views
0

Java 코드에 문제가 있습니다. 하나의 키에 여러 개의 값을 저장하려고하지만 유연하게 저장하려고합니다. 이것은 텍스트 파일에서 읽음을 의미하며 모든 줄은 하나의 단어입니다. 그들을 저장하기 위해 단어 쌍을 만들고 싶습니다./word2Java HashMap 복수 값이 할당 된 다중 키

word2/word3

word3/word4

I이 방법을 변경 한 조금

word1을 예를 들어. 열쇠의 값을 arraylist에 저장하고 싶습니다. 즉, 새 키가 나올 때마다 새로운 Arraylist와 키가 저장됩니다. 키가 맵에 있으면이 키 목록에 저장하려고합니다. 이것이 가능한가?

해시 맵에 저장해야합니다. 그러나 나는 그것을 작동시킬 수 없습니다 :

private HashMap<String, ArrayList<String>> hmap = new HashMap<String, ArrayList<String>>(); 

    private ArrayList<String> wort2; 

    public GrammelotH(String filename) throws IOException { 
     String fixWort = "."; 

     BufferedReader br = new BufferedReader(new FileReader(filename)); 
     while (br.ready()) { 
      String line = br.readLine(); 
      if (hmap.containsKey(fixWort)) { 
       hmap.put(fixWort, wort2.add(line)); 
      }else { 
       hmap.put(fixWort, new ArrayList<String>().add(line)); 
      } 

      fixWort = line; 
     } 

     br.close(); 

    } 

문제는 주문입니다. 당신의 사람이 생각하는 방법

hmap.put(fixWort, new ArrayList<String>().add(line)); 

hmap.put(fixWort, wort2.add(line)); 

작업을 얻을 수있다?

도움 주셔서 감사합니다. 안녕히 가세요!

답변

1

가 나는 그래서

List l = hmap.get(line); 
if (l != null) { 
    l.add(line)); 
}else { 
    l = new ArrayList<String>(); 
    l.add(line) 
    hmap.put(line, l); 
} 

같은 것을 찾고있을 거라고 생각, 당신은지도 이미 line 방금 ​​파일에서 읽고이 포함 된 경우를 참조하십시오. 그럴 경우 관련 목록에 추가하기 만하면됩니다. 목록을 작성하지 않으면 line을 추가 한 다음 두 맵을 모두 맵에 추가하십시오.

+0

예! 내가 처음 게시물을 보냈을 때 몇 초 후에 솔루션을 만들었습니다 ..... "답변"으로 게시해야합니까? – Felix

+0

@Felix이 방법으로 문제가 해결되면 (나중에 해결 한 경우에도) 향후 사용자에게 허용되는 것으로 표시하는 것이 좋습니다 – Chris

+0

도움을 주셔서 감사합니다. – Felix