1. java中list遍历时删除问题:
简化的for-each循环只是一个语法糖,等价于如下代码:
for( Iterator iter = ComList.iterator(); iter.hasNext();){
ComType com = iter.next();
if ( !com.getName().contains("abc")){
ComList.remove(com);
}
}
但是同时遍历和删除一个特list,是不被支持的。
解决办法:
使用Iterator遍历,使用Iterator.remove()删除你想删除的元素。
for( Iterator iter = ComList.iterator(); iter.hasNext();){
ComType com = iter.next();
if ( !com.getName().contains("abc")){
iter.remove();
}
}
2. 关于map遍历操作问题
反面教材代码:
for (Long id : userAlbumMap.keySet()) {
if (userAlbumMap.get(id) > 0) {//遍历了一遍map
UserAndJourneyDO userAndJourney = userMap.get(id);
userAndJourney.setAlbum(1);
}
}
注意注释部分,以上代码,我觉得至少遍历了两遍map。
改进:
for(Map.Entry entry : userAlbumMap.entrySet()){
if (entry.getValue() > 0) {//现成使用,不需要遍历map
UserAndJourneyDO userAndJourney = userMap.get(entry.getKey());
userAndJourney.setAlbum(1);
}
}
3 java list 交集 并集 差集 去重复并集
List list1 =new ArrayList();
list1.add("1111");
list1.add("2222");
list1.add("3333");
List list2 =new ArrayList();
list2.add("3333");
list2.add("4444");
list2.add("5555");
//并集
//list1.addAll(list2);
//交集
//list1.retainAll(list2);
//差集
//list1.removeAll(list2);
//无重复并集
list2.removeAll(list1);
list1.addAll(list2);