我有一个我需要与String进行比较的arrayList。
我做了什么:
ArrayList<String> val = new ArrayList<String>();
val= getValues();
如果我打印val,它会给出我预期的值。但
if(val.contains("abcd"))
虽然在打印值时,它返回false,但它由abcd组成。
可能出现什么问题?
编辑: 我的arraylist如何获得价值观:
IOUtils.copy(inputStream , write)
str = write.toString()
ArrayList<String> list = new ArrayList<String>();
list.addAll(Arrays.asList(str));
return list;
答案 0 :(得分:2)
您需要确保val
完全包含string
abcd
(没有空格,没有大写)。但是如果它不区分大小写且你允许空间,那么你可以这样检查它:
boolean isExist = false;
for(int i=0;i<val.size();i++){
if(val.get(i).trim().toLowerCase().equals("abcd")){
isExist=true;
break;
}
}
答案 1 :(得分:0)
如果getValues()
返回字符串的arraylist,则需要确保字符串&#34; abcd&#34;正如参数中给出的那样。另外,由于根据docs,contains方法实现了equals
方法进行比较,你应该确保字符串具有正确的大小写,因为equals是区分大小写的。
答案 2 :(得分:0)
contains()方法通过比较equals()方法中的Arraylist元素来工作。如果你的arraylist有“abcd”,它应该返回'true'。尝试检查你的getValues()方法是否返回一些隐藏的字符/空格以及“abcd”。
答案 3 :(得分:-1)
执行以下操作。
for(int i=0;i<val.size();i++){
if(val.get(i).contains("abcd") || val.get(i).contains("ABCD")){
// do some thing here
}
}