ArrayList包含不检测它应该是什么

时间:2016-05-10 10:19:41

标签: java arraylist

我有一个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)同样的结果。

2 个答案:

答案 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);)