将ArrayList的内容与Resultset进行比较

时间:2013-04-12 15:51:19

标签: java arraylist compare resultset

我有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;

  }

2 个答案:

答案 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