Java:访问同一ArrayList,同时使用该ArrayList中的其余元素
我有一个具有以下结构的数据库表:出于本文的目的,我想将该表称为MixUserTable
id, user_id, partner_id
1, 333cx1, s12z
2, 333xx1, r23z
3, r23z, t32q
我有一个不同的过程来获取包含ID列表的数组列表,它有一个user_id
和partner_id
的混合器
我试图遍历包含混合ID的ArrayList,并希望确认ArrayList中的每个元素在数据库中是否都有对。但要做到这一点,我必须访问多个元素才能进行数据库调用
以下是我尝试的方法:
我首先复制一个我已传递的ArrayList:然后我迭代原始ArrayList及其副本以检查该对是否存在:
ArrayList<UserDAO> tempPeople = new ArrayList<UserDAO>();
tempPeople = originalArrayList
for(UserDAO user : originalArrayList) {
for (UserDAO copyUser : tempPeople) {
if(!user.getId().equals(copyUser.getId())) {
//select * from mixuser where user_id = 'someUvalue' and partner_id = 'otherUserValue'
MixUserDAO mixUser = (MixUserDAO)myBatisUtil.select(myBatisUtil.MIXUSERDAO, "select", queryParams);
if(mixUser != null) {
Do something like update etc
}
}
}
}
我的问题是,这是处理这种情况的一种好方法,可以避免像java.util.ConcurrentModificationException
这样的异常
如果不是,处理这种情况的更好方法是什么
# 1 楼答案
ConcurrentModificationException的问题在于:
执行此代码时,声明一个指向originalArrayList的指针。正确的代码应该是:
更新 更准确的例子:
在myBatis xml mapper中:
您将在originalArrayList中获得所有同时具有userID和parentID的用户