2017-05-07 6 views
0

Javaコードに問題があります。私は1つのキーに複数の値を保存したいが、それらを柔軟に保存したい。つまり、私はテキストファイルから読み込み、すべての行は1つの単語です。それらを保存するために、私は単語のペアを構築したい。たとえば、次のようにJava HashMap複数の値が割り当てられた複数のキーフレキシブル

単語1/WORD2

ワード2 /ワード3

ワード3/WORD4

私はこの方法を少し変更しました。私は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

マップはすでにあなただけのファイルから読み込まれているlineが含まれている場合、私はそう

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

のようなものを見ていると思う、あなたが参照してください。表示されている場合は、関連付けられたリストに追加するだけです。リストが作成されない場合は、リストにlineを追加し、マップに両方を追加します。

+0

はい!私が最初の投稿を送った後、私はそれのための解決策を作りました.....私は "回答"として投稿する必要がありますか? – Felix

+0

@Felixこれで問題が解決した場合でも(私がすでに解決していても)、将来のユーザーに受け入れられるようにマークすることをお勧めします – Chris

+0

ありがとうございました! – Felix

関連する問題