Java 带有字符串和Arraylist的HashMap-错误消息
我收到一条错误消息 无法对给定对象的java.util.Map.ContainsValue进行可疑调用 包含字符串的实例(ArrayList除外) 这是我正在使用的程序的一个小版本。有人能建议如何解决这个问题吗?请把密码寄出去。我不是一个优秀的程序员Java 带有字符串和Arraylist的HashMap-错误消息,java,arraylist,hashmap,Java,Arraylist,Hashmap,我收到一条错误消息 无法对给定对象的java.util.Map.ContainsValue进行可疑调用 包含字符串的实例(ArrayList除外) 这是我正在使用的程序的一个小版本。有人能建议如何解决这个问题吗?请把密码寄出去。我不是一个优秀的程序员 import java.util.ArrayList; import java.util.HashMap; public class Main { public static void main(String[] a) { Hash
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] a) {
HashMap<String,ArrayList> map = new HashMap<String,ArrayList>();
//hashMap.put(key, new ArrayList());
map.put("key1", new ArrayList());
map.get("key1").add("value2");
//System.out.println(map.containsKey("key1"));
System.out.println(map.containsValue("value2"));
}
}
import java.util.ArrayList;
导入java.util.HashMap;
公共班机{
公共静态void main(字符串[]a){
HashMap=newHashMap();
//put(key,newarraylist());
put(“key1”,newarraylist());
映射。获取(“键1”)。添加(“值2”);
//System.out.println(map.containsKey(“key1”);
System.out.println(映射包含值(“值2”));
}
}
你可以试试这个例子
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class Main {
public static void main(String[] a) {
HashMap<String, List<String>> map = new HashMap<String, List<String>>();
map.put("key1", new ArrayList());
map.get("key1").add("value2");
// System.out.println(map.containsKey("key1"));
System.out.println(map.containsValue(Arrays.asList(new String[]{"value2"})));
}
}
import java.util.ArrayList;
导入java.util.array;
导入java.util.HashMap;
导入java.util.List;
公共班机{
公共静态void main(字符串[]a){
HashMap=newHashMap();
put(“key1”,newarraylist());
映射。获取(“键1”)。添加(“值2”);
//System.out.println(map.containsKey(“key1”);
System.out.println(map.containsValue(Arrays.asList(新字符串[]{“value2”}));
}
}
信息非常清楚。地图的值为ArrayList类型。将字符串传递给containsValue()而不是ArrayList。所以你得到了一个错误
顺便说一句,一个好习惯是以尽可能少的限制方式定义变量的类型,比如说将map声明为type map而不是HashMap
Map<String,List> map = new HashMap<String,ArrayList>();
Map Map=newhashmap();
这样,您可以根据需要以最小的涟漪效应替换不同的实现。在本例中,通过将map声明为map,您可以在将来自由地切换到TreeMap 您有一个
HashMap
,其中String
s代表键,ArrayList
s代表值:
HashMap<String,ArrayList> map = new HashMap<String,ArrayList>();
这很可疑。因为它不可能有那样的东西 公共类主{
public class Main {
public static void main(String[] a) {
HashMap<String, List<String>> map = new HashMap<String, List<String>>();
map.put("key1", new ArrayList());
map.get("key1").add("value2");
for (List<String> value : map.values()) {
System.out.println(value.contains("value2"));
}
}
}
公共静态void main(字符串[]a){
HashMap=newHashMap();
put(“key1”,newarraylist());
映射。获取(“键1”)。添加(“值2”);
for(列表值:map.values()){
System.out.println(value.contains(“value2”));
}
}
}
由于你是一个自称“不强”的程序员,我认为指出一些其他的东西会很有帮助
Object.equals(Object)
对列表元素进行成对测试public class Main {
public static void main(String[] a) {
HashMap<String, List<String>> map = new HashMap<String, List<String>>();
map.put("key1", new ArrayList());
map.get("key1").add("value2");
for (List<String> value : map.values()) {
System.out.println(value.contains("value2"));
}
}
}