我正在编写一个类,其构造函数采用 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/