我有一个arrayList
,里面有一堆字符串。我还有另一个带有一堆字符串的arrayList
。我想看看第一个数组列表是否包含第二个arrayList中的任何字符串,如果是,只是打印出来。应该很简单,但它似乎不起作用(并且肯定有共同的字符串)。
这是我的代码:
ArrayList<String> che=new ArrayList<String>();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.println("COL"+rsmd.getColumnName(i));
che.add(rsmd.getColumnName(i).trim());
}
String key = "";
String keys = "";
for (Entry<String, String> entry : map.entrySet()) {
key = entry.getKey().replace(":","")
.replace(">","MoreThan").replace("__","")
.replaceAll("\\." ,"").replaceAll("\\(s\\)" ,"")
.replaceAll(",$" ,"").replaceAll("%" ,"")
.replaceAll("\\(" ,"").replaceAll("\\)" ,"")
.replace("-" ,"").replace("-" ,"")
.replace("_" ,"").replace("#" ,"")
.replaceAll("\\/", "_").replaceAll("@", "AT")
.replaceAll("&", "AND").replaceAll("\\?", "AND")
.replace("≤","LessThan").replace("≥","MoreThan")
.replaceAll("\\s" ,"").replaceAll("^,","");
for (String n:che){
System.out.println("Che_String "+n);
System.out.println("KEY_String "+key);
if (n==key){
System.out.println("Detected the same: "+key.trim());
}
}
}
我知道有很多替换,我应该使用StringUtils.repaceEach
,我会这样做,但需要先对此进行排序
System.out.println
输出显示有几个类似的字符串,但它们没有被拾取,例如
Che_String Gender
KEY_String Gender
但我的Detected the same:
输出为空。
我也尝试了che.contains(key)
同样的结果。
答案 0 :(得分:2)
应将字符串与String.equals(String)
方法进行比较。使用==
,您可以比较它是否是同一个对象而不是相同的内容。 List.contains(Object)
正在使用equals()
方法。所以这应该工作。也许你的文本末尾有一些空白,在你的测试版中看不到。
答案 1 :(得分:0)
在Java 8中:
che.stream().filter(n -> map.keySet().contains(n)).forEach(match -> System.out.println("Detected the same: " + match);)