我有LinkedHashMap<String,ArrayList<String>> h
如果我这样做:System.out.println(h.get("key1"))
;它打印出来:[Burger King]
但如果我这样做:
if (h.get("key1").contains("Burger"))
System.out.println("Key1 contains Burger");
它忽略了它。如何检查相关密钥的ArrayList中的特定字符串?
答案 0 :(得分:4)
ArrayList.contains ()如果此列表包含指定的元素,则返回true。
在你的情况下,它不包含“Burger”,但它包含“Burger King”,匹配在子字符串上不相同。
为了达到你想要的目的,你需要在ArrayList上循环,并检查每个元素,并在String上应用 String.contains (),该字符串被定义为“当且仅返回true如果此字符串包含指定的char值序列“。
如果您还想忽略这种情况,可以在应用String.contains()之前将 String.toLowerCase ()应用于搜索词和每个元素。
答案 1 :(得分:1)
您正在测试列表中是否包含部分字符串,这不起作用,因为实际值是“汉堡王”。如果要检查部分匹配,则需要在ArrayList的每个元素上调用contains()
。
答案 2 :(得分:0)
List.contains()查找完全匹配的元素。
你是说这个吗?
for(String s: results.get("key1"))
if(s.contains("Burger"))
System.out.println("Key1 contains Burger");
答案 3 :(得分:0)
您必须遍历String
中的所有ArrayList<String>
个对象,并调用他们的 contains()
方法:
boolean containsSubString(final Collection<String> strings, final String searchString) {
for (String s : strings) {
if (s.contains(searchString)) {
return true;
}
}
return false;
}
答案 4 :(得分:0)
List包含字符串Burger King
,您正在寻找字符串Burger
。因此没有输出。