2012-04-19 24 views
0

共同的元素,我有3名爲CNAME﹑cnamedb,PNAME字符串列表。這些3列出了通過查詢SQL database.cname和PNAME結果從查詢的Excel數據庫中獲取得到的結果。 cnamedb結果正在查詢SQL數據庫。如何從字符串的ArrayList

我聲明,並存儲到數組這樣。

List Cname = new ArrayList(); 
List Pname =new ArrayList(); 
List cnamedb=new ArrayList(); 

    Cname.add(rs.getString("Cname")); 
    Pname.add(rs.getString("Pname")); 
    cnamedb.add(res.getString("Cname")); 

我想這樣

 boolean hasCommonName = Cname.retainAll(Cnamedb); 
     if(hasCommonName){ 
      out.println(Cname+"<br>"); 
     out.println(hasCommonName); 
     } 
     boolean haspname=Pname.retainAll(Cnamedb); 
     if(haspname){ 
    out.println(haspname); 
    } 

這只是給我一個答案真正的第一個if語句,但不打印列表中的元素。第二個if語句沒有得到任何結果。

我需要找出共同的要素存在於數據庫和Excel,首先我需要得到的CNAME記錄和Cnamedb常見的元素,然後從PNAME和Cnamedb。我如何獲得常見元素。請向我提供代碼片段。

+2

[二列出了常見的元素]的可能重複(http://stackoverflow.com/questions/5943330/common-elements-in-two-lists)此外,這將是一個更容易做在SQL而不是java中交叉。 – bdares 2012-04-19 08:40:56

+0

請檢查我編輯的代碼。即使使用retainAll也無法打印值。 – user1063145 2012-04-19 08:50:56

+0

請學習java命名約定並遵守它們。 – kleopatra 2012-04-19 10:03:57

回答

0

下面給出的代碼片段爲我工作。

List<String> commonToCnameAndCnamedb = new ArrayList<String>(Cname); 

    List<String> commonToPnameAndCnamedb = new ArrayList<String>(Pname); 

    boolean hasCommonName = commonToCnameAndCnamedb.retainAll(cnamedb); 
    if (hasCommonName) { 
     System.out.println(commonToCnameAndCnamedb + "<br>"); 
     System.out.println(hasCommonName); 
    } 
    boolean haspname = commonToPnameAndCnamedb.retainAll(cnamedb); 
    if (haspname) { 
     System.out.println(commonToPnameAndCnamedb + "<br>"); 
     System.out.println(haspname); 
    } 
+0

它給我真真的兩個if條件。但它不打印常用元素System.out.println(commonToPnameAndCnamedb +「
」); – user1063145 2012-04-19 09:48:25

+0

我也適用於所有情況。但是常見的元素都列在適當的位置上。不知道你那邊發生了什麼 – Shamli 2012-04-19 15:01:34