您好,我正在尝试从两个字符串列表中获取通用值...列表A具有通过查询Excel数据库获得的值,列表B具有通过查询SQL数据库获得的值。我希望有来自A和B的公共值。为此,我使用了retainAll集合。但它没有打印出它给我的普通values.instead。请帮我解决这个问题。如何获得通用值,而不是使用retainAll。请更正我的代码片段。
//connecting excel database and storing its values
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:spreadsheetdb","","");
out.println("Excel Database connected" +"<br>");
Statement stmt=conn.createStatement();
String excelquery="Select * from [Sheet1$]";
ResultSet excelvalues= stmt.executeQuery(excelquery);
List A= new ArrayList();
while(excelvalues.next()){
A.add(excelvalues.getString("name"));}
//connection sql Db and storing its values
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
connection = DriverManager.getConnection("jdbc:odbc:copyknowledgebase","sa","sqladmin");
out.println("<br>"+"MSSQL connected " +"<br>")
Statement statement=connection.createStatement();
String conceptquery="Select * from dbo.conc";
ResultSet conceptdetails=statement.executeQuery(conceptquery);
Timestamp ts = new Timestamp(new java.util.Date().getTime());
List B = new ArrayList();
while(conceptdetails.next()){
B.add(conceptdetails.getString("Cname"));
}
B.retainAll (A);
out.println(B);发布于 2012-05-22 18:00:08
这强烈地表明在您的列表A和B中没有共同值。你有没有试过调试/单步执行来检查?
retainAll(collection)应该做你期望它做的事情。考虑下面这个简单的例子:
public static void main(String[] args) throws DataException {
List<Integer> all = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8));
List<Integer> even = Arrays.asList(2,4,6,8);
all.retainAll(even);
System.out.println(all);
}...which打印2、4、6、8-即常用值。
关于修饰语,有很多方法可以做到这一点--这里有一个例子:
public static void main(String[] args) throws DataException {
List<Integer> all = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8));
List<Integer> even = Arrays.asList(2,4,6,8);
List<Integer> common = new ArrayList<Integer>(all);
for (Integer i : all){
if (!even.contains(i)){
common.remove(i);
}
}
System.out.println(common);
}...which再次打印2、4、6、8
(实际上,这与AbstractCollection执行retainAll()的方式非常相似,不同之处在于它使用Iterator而不是for each循环,因此它可以在执行过程中修改集合,而不必创建副本。)
https://stackoverflow.com/questions/10699001
复制相似问题