• java集合概览


    java集合概览:

      我们先通过一张图来了解java集合。

       从上图可以看到,java集合主要分为两大类,分别是Collection和Map。上图只列举了常用的几个实现类,如果要看所有的实现类,可以查看JDK文档。

    Collection的所有子接口和实现类如下:

    Map的所有子接口和实现类如下:

      可以看到集合的实现类非常非常的多,但是不用怕,我们只需要学习常用的即可,比如第一张图中的就是必须要掌握的。还有些JUC包下的重要的同步实现类,图中没有画出来,后续会进行讲解。我们先来看看几个接口的区别:

    • Collection 接口存储一组不唯一,无序的对象
    • List 接口存储一组不唯一,有序(插入顺序)的对象
    • Set 接口存储一组唯一,无序的对象
    • Map接口存储一组键值对象,提供key到value的映射 

    迭代器:

      我们在使用集合的过程中,避免不了要对集合进行遍历,javaAPI提供了一个公共的遍历接口Iterable,我们来看下它是怎么实现遍历的。我们以ArrayList实现类为例子,看如下代码:

    package test;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     * @ClassName CollectionTest
     * @description:
     * @author:liuyi
     * @Date:2020/12/6 21:03
     */
    public class CollectionTest {
        public static void main(String[] args) {
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(2);
            list.add(3);
            Iterator<Integer> iterator = list.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
    
        }
    }

      可以看到用迭代器方式遍历一个集合十分的简单,那它到底是怎么做到了呢。其实它的实现属于一种设计模式,迭代器模式,可以参考我这篇文章https://www.cnblogs.com/liu-yi/p/13997431.html。在这篇文章里面,我自定义实现了一个迭代器,和jdk自带的几乎一模一样,我们通过源码来分析它的实现过程。先来看ArrayList的类的继承关系:

     正如我们上面说的一样,它最终实现了Iterable接口,我们来看Iterable的源码:

     我们图中圈了一个方法iterator,这就意味着它所有的实现类都需要实现这个方法,所以我们在代码里面写的Iterator<Integer> iterator = list.iterator();这里调用的就是ArrayList实现的这个方法,代码如下:

       所以迭代器的实现,也可以说迭代器模式其实就是多态的一个典型的应用,十分简单,也很好理解。至于Iterator接口中的两个方法hasNext和next两个方法也很好理解,一个是判断是否还有值,如果有值就获取这个值。

  • 相关阅读:
    Window安装Redis并设置为开机启动
    大佬为你揭秘微信支付的系统架构,你想知道的都在这里了
    想要设计自己的微服务?看这篇文章就对了
    破局人工智能:构建AI,与腾讯云一起探索语音应用场景
    巧用机器学习定位云服务器故障
    重磅发布 | 黑镜调查:深渊背后的真相之「DDoS 威胁与黑灰产业调查报告」
    5分钟内看懂机器学习和深度学习的区别
    如何防范和应对Redis勒索,腾讯云教你出招
    Redis勒索事件爆发,如何避免从删库到跑路?
    作为一个编程新手,我再也不怕Flink迷了我的眼!
  • 原文地址:https://www.cnblogs.com/liu-yi/p/14094483.html
Copyright © 2020-2023  润新知