arraylist不包含应该检测的内容

ogq8wdun  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(296)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
四年前关门了。
我有一个 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) 同样的结果。

0sgqnhkj

0sgqnhkj1#

字符串应与 String.equals(String) 方法。与 == 如果是相同的对象而不是相同的内容,则进行比较。 List.contains(Object) 正在使用 equals() 方法。所以这应该管用。也许你的文本末尾有一些空白,但在测试打印中看不到。

rbl8hiat

rbl8hiat2#

在java 8中: che.stream().filter(n -> map.keySet().contains(n)).forEach(match -> System.out.println("Detected the same: " + match);)

相关问题