java 集合 - 聚合操作 遍历 + 删除

集合collections

最近看到官方文档,写下记录。
1、简介:集合(其实也叫容器)只是将多个元素组成一个单元对象。通常用于存储、检索、操作和聚合。
2、集合框架包括:

  • 接口:Map,Collection,Deque等等
  • 实现:ArrayList、HashMap等等
  • 算法:例如搜索和排序

插入一张图片,来说明一下collection框架粗略的层次结构:
collections

  • Set— 不能包含重复元素的集合。
  • List— 有序集合(有时称为序列)。Lists 可以包含重复的元素。其实就是数组啦
  • Queue— 在处理之前用于保存多个元素的集合。队列通常但不一定以 FIFO(先进先出)方式对元素进行排序。
  • Deque— 在处理之前用于保存多个元素的集合。双端队列可以用作 FIFO(先进先出)和 LIFO(后进先出)。
  • Map— 将键映射到值的对象。键值对,大家一个很熟悉。

这里都没有仔细讲。具体自己baidu

今天重要讲聚合操作,也就是遍历,外加删除。
1、第一种方法:使用stream流
 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("3");
        list.add("a");
        list.add("c");
        list.add("5");
        list.add("d");
        // 过滤出 "a" 元素
        list.stream().filter(e -> e.equals("a")).forEach(e -> System.out.println(e));
    }

结果是:

E:\JDK\bin\java.exe "-javaagent:E:\idea2019\IntelliJ IDEA 2020.1\lib\idea_rt.jar=61258:E:\idea2019\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath E:\JDK\jre\lib\charsets.jar;E:\JDK\jre\lib\deploy.jar;E:\JDK\jre\lib\ext\access-bridge.jar;E:\JDK\jre\lib\ext\cldrdata.jar;E:\JDK\jre\lib\ext\dnsns.jar;E:\JDK\jre\lib\ext\jaccess.jar;E:\JDK\jre\lib\ext\jfxrt.jar;E:\JDK\jre\lib\ext\localedata.jar;E:\JDK\jre\lib\ext\nashorn.jar;E:\JDK\jre\lib\ext\sunec.jar;E:\JDK\jre\lib\ext\sunjce_provider.jar;E:\JDK\jre\lib\ext\sunmscapi.jar;E:\JDK\jre\lib\ext\sunpkcs11.jar;E:\JDK\jre\lib\ext\zipfs.jar;E:\JDK\jre\lib\javaws.jar;E:\JDK\jre\lib\jce.jar;E:\JDK\jre\lib\jfr.jar;E:\JDK\jre\lib\jfxswt.jar;E:\JDK\jre\lib\jsse.jar;E:\JDK\jre\lib\management-agent.jar;E:\JDK\jre\lib\plugin.jar;E:\JDK\jre\lib\resources.jar;E:\JDK\jre\lib\rt.jar;E:\IDEA_project\official\netty-netty-4.1.77.Final\example\target\classes;E:\Maven\repository\io\netty\netty-common\4.1.77.Final\netty-common-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-buffer\4.1.77.Final\netty-buffer-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-transport\4.1.77.Final\netty-transport-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-resolver\4.1.77.Final\netty-resolver-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec\4.1.77.Final\netty-codec-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-handler\4.1.77.Final\netty-handler-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-transport-sctp\4.1.77.Final\netty-transport-sctp-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-handler-proxy\4.1.77.Final\netty-handler-proxy-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-http\4.1.77.Final\netty-codec-http-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-http2\4.1.77.Final\netty-codec-http2-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-memcache\4.1.77.Final\netty-codec-memcache-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-redis\4.1.77.Final\netty-codec-redis-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-socks\4.1.77.Final\netty-codec-socks-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-stomp\4.1.77.Final\netty-codec-stomp-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-mqtt\4.1.77.Final\netty-codec-mqtt-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-haproxy\4.1.77.Final\netty-codec-haproxy-4.1.77.Final.jar;E:\Maven\repository\io\netty\netty-codec-dns\4.1.77.Final\netty-codec-dns-4.1.77.Final.jar;E:\Maven\repository\com\google\protobuf\protobuf-java\2.6.1\protobuf-java-2.6.1.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final.jar;E:\Maven\repository\io\netty\netty-tcnative-classes\2.0.52.Final\netty-tcnative-classes-2.0.52.Final.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final-linux-x86_64.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final-linux-aarch_64.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final-osx-x86_64.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final-osx-aarch_64.jar;E:\Maven\repository\io\netty\netty-tcnative-boringssl-static\2.0.52.Final\netty-tcnative-boringssl-static-2.0.52.Final-windows-x86_64.jar;E:\Maven\repository\org\conscrypt\conscrypt-openjdk-uber\2.5.2\conscrypt-openjdk-uber-2.5.2.jar;E:\Maven\repository\com\jcraft\jzlib\1.1.3\jzlib-1.1.3.jar;E:\Maven\repository\com\yammer\metrics\metrics-core\2.2.0\metrics-core-2.2.0.jar;E:\Maven\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;E:\Maven\repository\io\netty\netty-transport-udt\4.1.77.Final\netty-transport-udt-4.1.77.Final.jar;E:\Maven\repository\com\barchart\udt\barchart-udt-bundle\2.3.0\barchart-udt-bundle-2.3.0.jar;E:\Maven\repository\io\netty\netty-transport-rxtx\4.1.77.Final\netty-transport-rxtx-4.1.77.Final.jar;E:\Maven\repository\org\rxtx\rxtx\2.1.7\rxtx-2.1.7.jar;E:\Maven\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\Maven\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\Maven\repository\org\bouncycastle\bcpkix-jdk15on\1.69\bcpkix-jdk15on-1.69.jar;E:\Maven\repository\org\bouncycastle\bcutil-jdk15on\1.69\bcutil-jdk15on-1.69.jar;E:\Maven\repository\org\bouncycastle\bcprov-jdk15on\1.69\bcprov-jdk15on-1.69.jar;E:\Maven\repository\com\sun\activation\javax.activation\1.2.0\javax.activation-1.2.0.jar io.netty.example.http.upload.HttpUploadServerHandler
a

Process finished with exit code 0

当然,将stream()换成parallelStream()也是一样的结果。

2、第二种肯定是for - each循环了
public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("3");
        list.add("a");
        list.add("c");
        list.add("5");
        list.add("d");
        for (String e : list){
            if (e.equals("a")){
                System.out.println(e);
            }
        }
    }

结果当然同上。其实,for - each 循环底层只是隐藏了迭代器iteractor。
####### 第三种就是iteractor迭代器了:

 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("3");
        list.add("a");
        list.add("c");
        list.add("5");
        list.add("d");
        for (Iterator iterator = list.iterator(); iterator.hasNext();){
            if (iterator.next().equals("a")){
                iterator.remove();
            }
        }
        list.forEach(e -> System.out.println(e));
    }

结果:

1
3
c
5
d
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值