Java 如何将元素添加到多重贴图中?

Java 如何将元素添加到多重贴图中?,java,map,Java,Map,我正在使用多重映射按长度对单词进行排序。整数是单词的长度。 我想知道如何才能在列表中添加单词 Map<Integer, List<String>> mmap = new HashMap<Integer, List<String>>(); Map mmap=newhashmap(); 假设我有两个词,“鲍勃”和“可以” 它们都是3个字母。有人能告诉我怎么做吗 If(mmap.containsKey(word.length()){ If(mmap.

我正在使用多重映射按长度对单词进行排序。整数是单词的长度。 我想知道如何才能在列表中添加单词

Map<Integer, List<String>> mmap = new HashMap<Integer, List<String>>();
Map mmap=newhashmap();
假设我有两个词,“鲍勃”和“可以” 它们都是3个字母。有人能告诉我怎么做吗

If(mmap.containsKey(word.length()){
If(mmap.containsKey(word.length())){
  mmap.get(word.length()).add(word);
}else{
  List<String> list = new LinkedList<String>;
  list.add(word);
  mmap.put(word.length(), list)
}
mmap.get(word.length()).add(word); }否则{ 列表=新建链接列表; 列表。添加(word); mmap.put(word.length(),list) }
If(mmap.containsKey(word.length())){
mmap.get(word.length()).add(word);
}否则{
列表=新建链接列表;
列表。添加(word);
mmap.put(word.length(),list)
}
使用集合列表

private final List<Set<String>> list = new ArrayList<>();


public void add(String word) {
    while(list.size() <= word.length()) list.add(new HashSet<>());
    list.get(word.length()).add(word);
 }
private final List=new ArrayList();
公共空添加(字符串字){
而(list.size()使用集合的列表

private final List<Set<String>> list = new ArrayList<>();


public void add(String word) {
    while(list.size() <= word.length()) list.add(new HashSet<>());
    list.get(word.length()).add(word);
 }
private final List=new ArrayList();
公共空添加(字符串字){
while(list.size()使用,您可以创建或检索键的内部集合,然后在一行中添加到其中:

mmap.computeIfAbsent(word.length(), k -> new ArrayList<>()).add(word);
mmap.computeifassent(word.length(),k->newarraylist()).add(word);
使用,您可以创建或检索密钥的内部集合,然后在一行中添加到其中:

mmap.computeIfAbsent(word.length(), k -> new ArrayList<>()).add(word);
mmap.computeifassent(word.length(),k->newarraylist()).add(word);

请注意,列表映射并不是真正的多重映射。您可以使用番石榴
多重映射
,它可以处理使用同一个键自动插入多个元素的问题。如果单词长度将是最小值0最大值,那么请注意列表映射并不是真正的多重映射。您可以使用番石榴
多重映射,它将自动处理使用同一关键字插入多个元素的操作。鉴于单词长度将是最小值0最大值之类的小值,例如谢谢,您的示例消除了我对get/put的混淆。我想知道如何访问这些单词。如果我想打印具有特定长度的单词,我将如何操作关于这一点?鉴于关键是字符数,
mmap.get(num)
将为您提供带有单词的
列表。正如@frozenkoi所说的
mmap.get(num)
返回num长度的单词列表。例如
mmap.get(3)
提供单词列表长度为3。
print(mmap.get(num))
应该这样做,或者您可以迭代列表。谢谢您,您的示例消除了我对get/put的困惑。我想知道如何访问这些单词。如果我想打印一定长度的单词,我将如何处理?如果关键字是字符数,
mmap.get(num)
将为您获取包含单词的
列表
。正如@frozenkoi所说的
mmap.get(num)
返回num长度的单词列表。例如
mmap.get(3)
给出单词列表长度为3。
打印(mmap.get(num))
应该这样做,或者您可以迭代列表。