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 ответа
Строка должна сравниваться с String.equals(String)
метод. С ==
Вы сравниваете, если это один и тот же объект, а не тот же контент. List.contains(Object)
использует equals()
метод. Так что это должно работать. Возможно, у вас есть пробел в конце текста, который не виден в тестовой распечатке.
В Java 8:
che.stream().filter(n -> map.keySet().contains(n)).forEach(match -> System.out.println("Detected the same: " + match);)