2016-05-10 8 views
0

arrayListには文字列が含まれています。私はまた別の文字列arrayListを持っています。最初の配列リストに2番目の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)も試しました。ジャワ8において

+1

'=='ではなく 'String'sを比較するために' equals'を使います。 – Landei

+0

'=='は参照だけを比較し、内容は比較しません。 – SacJn

答えて

2

文字列String.equals(String)方法と比較すべきです。 ==を使用すると、同じコンテンツではなく同じオブジェクトであるかどうかを比較できます。 List.contains(Object)equals()メソッドを使用しています。これはうまくいくはずです。あなたのテストプリントでは見えないテキストの最後に空白があるかもしれません。

0

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

関連する問題