2012-04-19 26 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