集合遍历与删除,java list 交集 并集 差集 去重复并集
集合遍历与删除,java list 交集 并集 差集 去重复并集
Dylan1009 发表于10个月前
集合遍历与删除,java list 交集 并集 差集 去重复并集
  • 发表于 10个月前
  • 阅读 69
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

1. java中list遍历时删除问题:

简化的for-each循环只是一个语法糖,等价于如下代码:

for( Iterator<ComType> iter = ComList.iterator(); iter.hasNext();){
    ComType com = iter.next();
    if ( !com.getName().contains("abc")){
        ComList.remove(com);
    }
}

但是同时遍历和删除一个特list,是不被支持的。

解决办法:

使用Iterator遍历,使用Iterator.remove()删除你想删除的元素。

for( Iterator<ComType> 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<Long, Integer> 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);
  

 

共有 人打赏支持
粉丝 2
博文 100
码字总数 112377
×
Dylan1009
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: