我有String ArrayList与Resultset进行比较。
Ex:ArrayList Elements
ITM001
ITM002
ITM003
ITM004
例如:结果集1
ITM001
ITM002
ITM003
ITM004
包含所有元素
return ArrayList Empty;
例如:结果集2
ITM001
ITM002
ITM004
缺少ITM003
return ArrayList ITM003;
例如:结果集3
ITM001
ITM002
缺少ITM003,ITM004
返回ArrayList ITM003,ITM004;
如果Resultset不包含Arraylist的所有元素,那么缺少这些元素 元素必须作为ArrayList返回。否则返回空ArrayList。
这就是我的尝试。
public static ArrayList<String> checkStoreItems(String currentStore, ArrayList<String> stlist) throws ClassNotFoundException, SQLException {
Connection conn = DBConnection.conn();
String sql = "select itemId from Store_Items where storeID=(select storeID from StoreMain where locationName=?)";
Object []values ={currentStore};
ResultSet res = DBHandller.getData(sql, conn, values);
ArrayList<String> storelist = new ArrayList<String>();
while(res.next()){
String item = res.getString("itemId");
for (int i = 0; i < stlist.size(); i++) {
if (item.contains(stlist.get(i))) {
continue;
}else{
storelist.add(item);
}
}
}
return null;
}
答案 0 :(得分:5)
如果我理解你的问题,你可以尝试这样的事情:
public static ArrayList<String> checkStoreItems(String currentStore,
ArrayList<String> stlist) throws ClassNotFoundException, SQLException {
Connection conn = DBConnection.conn();
String sql = "select itemId from Store_Items where storeID=(select storeID from StoreMain where locationName=?)";
Object []values = {currentStore};
ResultSet res = DBHandller.getData(sql, conn, values);
Set<String> storelist = new HashSet<String>();
while(res.next()){
String item = res.getString("itemId");
storelist.add(item);
}
stlist.removeAll(storelist);
return stlist;
}
答案 1 :(得分:1)
使用HashSet
的{{1}}方法执行操作。您首先需要将每个来源的元素放入removeAll
。
这样就不需要为HashSet
中的每个元素循环遍历整个ArrayList
,使其成为O(n)操作,而不是O(n ^ 2)。
ResultSet