java - Java中如何向HashMap中添加键为Integer、值为arraylist的元素?

标签 java constructor arraylist hashmap

我正在编写一个类,其构造函数采用 List<String>并返回一个字符串长度为 key(Integer) 的 HashMap 其值为 arrayList<String>持有绳子。 也就是说,我正在尝试将字符串的长度映射到字符串列表。这是我的代码。

public class Solver {
   Map<Integer,ArrayList<String>> inventoryMap;

    //constructor
    public Solver(List<String> list){
    inventoryMap=new HashMap<Integer,ArrayList<String>>();
    for (String s : list) {
         int x = s.length();
         if (inventoryMap.containsKey(x)){
            inventoryMap.put(x,inventoryMap.get(x).add(s));
         } else {
            newlist=new ArrayList<String>();
            newlist.add(s);
            inventoryMap.put(x,newlist);
         }
      }
   }

当我编译此代码时,出现以下错误

Solver.java:12: put(java.lang.Integer,java.util.ArrayList<java.lang.String>) in java.util.Map<java.lang.Integer,java.util.ArrayList<java.lang.String>> cannot be applied to (int,boolean)
            inventoryMap.put(x,inventoryMap.get(x).add(s));

我认为添加 String elements 是错误的至my ArrayList<String>这是 value map 的 你能指导我可能出错的地方吗?

最佳答案

if (inventoryMap.containsKey(x)) {
     inventoryMap.put(x,inventoryMap.get(x).add(s));
} 

更改此内容

if (inventoryMap.containsKey(x)) {
    inventoryMap.get(x).add(s);
} 

原因是 inventoryMap.get(x).add(s) 将返回 boolean 值,因此您不能用 boolean 值代替列表。

由于 map 已经包含列表,因此在列表中添加任何元素,您不需要在 map 中放置任何条目。只需从 map 中获取列表并向其中添加元素即可。

关于java - Java中如何向HashMap中添加键为Integer、值为arraylist的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737687/

相关文章:

java - 有没有一种优雅的方法来获取Java中多个方法返回的第一个非空值?

java - 使用斐波那契数列的基本数组列表

java - 将方法中创建的 ArrayList 添加到 JCombobox

java - 使用java在excel中的两列中写入多条记录

java - Spring Webflow - 无法在模型 bean 上调用注释验证

java - 如何在 Apache Wink 客户端中对请求进行 "Preview"

c# - 结构构造函数 : "fields must be fully assigned before control is returned to the caller."

c++ - 使用构造函数中的参数

c++ - 请求从 'std::string' 到非标量类型的转换

java - 如何查找 ArrayList 中的字符串是否包含字符形式的数字