文档章节

集合遍历与删除,java list 交集 并集 差集 去重复并集

Dylan1009
 Dylan1009
发布于 2017/02/28 21:01
字数 270
阅读 375
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

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);
  

 

© 著作权归作者所有

上一篇: 线程同步控制
下一篇: static
Dylan1009
粉丝 5
博文 196
码字总数 131086
作品 0
广州
程序员
私信 提问
加载中

评论(0)

编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议67~82)

有些东西,当你即将失去了的时候,你才懂得它的弥足珍贵,也许亡羊补牢,为时未晚! 建议67:不同的列表选择不同的遍历算法 建议68:频繁插入和删除时使用LinkedList 建议69:列表相等只关心...

青衣霓裳
2019/07/18
126
0
5、Redis中对Set类型的操作命令

写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- -------------------------------------------------------------------- 1、......

osc_evk522lj
2018/07/11
3
0
Java中多个集合的交集,并集和差集

Java中多个集合的交集,并集和差集 https://www.cnblogs.com/zt19994/p/9114868.html 一、交集   java中交集使用 A.retainAll(B) ,交集的结果在集合A中。 1 import org.junit.Test;23 imp...

osc_6093h42a
2019/09/10
8
0
Java8的stream API与 C#的 LINQ 拓展方法对比

为方便初学 Java8/C# 集合操作的人,特意写下这篇文章. 前期准备 C#版 java版 单集合 分类筛选 计数(Count)

zeusro
2019/05/17
0
0
【Java】【27】两个List的并集/无重复并集/交集/差集

正文: 现有两个List: List<String> list1 = new ArrayList<>();list1.add("A");list1.add("B");List<String> list2 = new ArrayList<>();list2.add("B");list2.add("C"); 注:如果 list =......

osc_riztgt9i
2019/06/03
3
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式三大分类+六大基本原则

1. 三大分类 1.1 创建型模式 工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式 1.2 结构型模式 适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式 1.3 行为型模式...

steven-黄笑笑
27分钟前
14
0
多线程基础学习

线程和进程有区别? 进程=加载上下文+执行程序+保存上下文 进程属于资源分配的最小单位,线程属于执行任务的最小单位。 线程6种状态: 1、New 尚未启动的线程的线程状态。 2、Runnable 可运行...

javazyw
28分钟前
28
0
英文对“ Big O”符号的解释是什么? - What is a plain English explanation of “Big O” notation?

问题: 我希望尽可能少用正式的定义和简单的数学方法。 解决方案: 参考一: https://stackoom.com/question/22l0/英文对-Big-O-符号的解释是什么 参考二: https://oldbug.net/q/22l0/What...

javail
30分钟前
11
0
Spring Cloud升级之路 - Hoxton - 2.入口类注解修改与OpenFeign的改造

本系列示例与胶水代码地址: https://github.com/HashZhang/spring-cloud-scaffold 入口类注解修改 之前的项目,我们也许会用@SpringCloudApplication作为我们入口类的注解。这个注解包括: ...

zhxhash
40分钟前
28
0
怎么将流程图翻转90度?迅捷画图教你全选翻转小技巧!

怎么将流程图翻转90度?在绘制好流程图之后,会接收到各式各样的修改意见,例如将绘制好的流程图翻转90度这样的操作,很多人在执行这个操作的时候,会先选择流程图的单个部分,逐个进行翻转,...

开源312
45分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部