![](/img/trans.png)
[英]Java - How to check if there is a value inside an ArrayList that is a value of a key in a HashMap?
[英]how to add elements to HashMap whose key is Integer and value is arraylist in Java?
我正在写一个类,该类的构造函数使用List<String>
并返回一个哈希字符串,该哈希映射的字符串长度为key(Integer)
,其值作为包含字符串的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>
中是错误的,这是Map的value
,您可以指导我解决我可能出错的问题吗?
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)
将返回布尔值,因此您不能将布尔值替换为List。
由于地图已经包含列表,因此在列表中添加任何元素都不需要在地图中放置任何条目。 只需从地图中获取列表,然后向其中添加元素即可。
ventoryMap.get(x).add(s)返回布尔值,并且您试图将其放入地图中。 这是导致异常的原因。 将列表放在地图中将解决此问题。
您的代码清单Map.get(x).add(s)将值添加到列表中并返回一个布尔值。 所以你需要有类似的东西。
List<String> list =inventoryMap.get(x);
list.add(s);
由于add
返回一个boolean
inventoryMap.put(x,inventoryMap.get(x).add(s))
因此无法链接方法类调用,例如inventoryMap.put(x,inventoryMap.get(x).add(s))
。 实际上,您甚至不需要put
语句。 由于您没有remove
List
,因此其引用将保留在Map
因此对List
任何更新都将可见。
您所需要的只是inventoryMap.get(x).add(s)
。
首先, inventoryMap.get(x).add(s)
返回boolean
(元素是否成功添加)。 因此与ArrayList<String>
类型不兼容。 你可以简单地做
inventoryMap.get(x).add(s)
无需显式调用pur()函数。
其次int x = s.length();
应该是Integer x = s.length();
。 您可以将int放在需要Integer的地方(无论如何,您不能在泛型中使用int)。
这条线的问题
inventoryMap.put(x,inventoryMap.get(x).add(s));
是inventoryMap.get(x).add(s)
将返回一个boolean
并且map期望在此处有一个List
。 您需要分解此语句。 像这样的东西:
List<String> stirngsList = inventoryMap.get(x);
stirngsList.add(s);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.