Java には連想配列がありません。しかし、ほとんど同じ目標を達成するハッシュマップがあります。あなたの場合、任意のキーに対して複数の値を持つことができます。したがって、ハッシュマップの各エントリを配列または何らかのコレクションにすることができます。ArrayList が選択される可能性があります。あれは:
Hashmap<Integer,ArrayList<String>> words=new HashMap<Integer,ArrayList<String>>();
ファイルなどからリストを読み取るためのコードを調べるつもりはありません。それは別の質問です。しかし、構造がどのように機能するかを理解するために、リストをハードコーディングできるとします。次のようにできます。
ArrayList<String> set=new ArrayList<String)();
set.add("it");
words.put(Integer.valueOf(2), set);
set.clear();
set.add("your");
set.add("real");
words.put(Integer.valueOf(4), set);
等。
In practice, you probably would regularly be adding words to an existing set. I often do that like this:
void addWord(String word)
{
Integer key=Integer.valueOf(word.length());
ArrayList<String> set=words.get(key);
if (set==null)
{
set=new ArrayList<String>();
words.put(key,set);
}
// either way we now have a set
set.add(word);
}
補足: プログラマーがこのように「set」を Hashmap に戻す、つまり「words.put(key,set)」でブロックを終了するのをよく見かけます。これは不要です。既に存在します。ハッシュマップから「セット」を取得すると、コピーではなく参照が取得されるため、行った更新は「そこ」にあるだけであり、元に戻す必要はありません。
免責事項: このコードは頭の中で思い浮かびません。明示または黙示の保証はありません。しばらく Java を書いていないので、構文エラーや関数名の誤りがあるかもしれません。:-)