Java 没有关联数组。但它确实有 Hashmaps,它主要实现了相同的目标。在您的情况下,您可以为任何给定键设置多个值。因此,您可以做的是使 Hashmap 中的每个条目成为数组或某种集合。 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)”在末尾。这是不必要的:它已经存在了。当您从 Hashmap 获得“设置”时,您获得的是参考,而不是副本,因此您所做的任何更新都只是“那里”,您不必将其放回原处。
免责声明:此代码不在我的脑海中。没有任何明示或暗示的保证。我有一段时间没有编写任何 Java,所以我可能有语法错误或错误的函数名称。 :-)