2017-05-07 85 views
0

我的Java代碼存在問題。我想要將多個值存儲在一個密鑰中,但我想要靈活地存儲它們。這意味着我從文本文件讀取,每行都是一個字。爲了存儲它們,我想建立一對單詞。例如:Java HashMap具有多個值的多個鍵分配靈活

WORD1/WORD2

WORD2/WORD3

WORD3/word4

我已經改變此方法一點點。我想將鍵的值存儲在一個數組列表中。這意味着每次當一個新的密鑰出現時,一個新的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