日期:2014-05-20  浏览次数:20711 次

List用法的一个问题请教?
一:List<Permission> apList (List<Permission>)assignPermissionDao.findPermissionsByRole(role);
List<Permission> allPermissionList = permissionDao.findAll(Permission.class);
/*for(Permission permission:apList){
for(Permission permission2 :allPermissionList){
if (permission.getPermissionName().equals(permission2.getPermissionName())){
allPermissionList.remove(permission2);
}
}
}
二:allPermissionList.removeAll(apList);
以上两种方法为什么我一个一个的把元素从 allPermissionList中remove会出错,二removeAll不会出错?
------最佳解决方案--------------------
楼主这个一个一个删必须出错啊,并发异常,因为ArrayList不是线程安全的。
你在循环迭代的时候还在删除,就会产生快速失败异常了。这种时候你得用迭代器去迭代删除。

------其他解决方案--------------------
从你贴的代码看不会有什么问题。
如果要说问题,那就是多了个没收尾的注释“/*”,在/*for(Permission permission:apList){这行里。
------其他解决方案--------------------
那么如果我要for循环一个一个移除,应该不会出问题吧??
我的感觉增强for循环和for循环一样,对线程安全问题不是很了解,谢谢了!!