JavaSE进阶-集合(一)

    Collection集合            【重点】
    List集合                      【重点】

集合的概述
    什么是集合
        集合是一种用于存储多个数据的容器
        集合不是一两个,而是有很多,基础班学习的ArrayList只是其中的一个

    集合和数组的区别
        1、集合的长度可变
           数组的长度可不变

        2、集合只能存储引用类型的数据,不能直接存储基本类型的数据
            数组既可以存储基本类型的数据,也可以存储引用类型的数据

集合的体系结构
    Java是面向对象的语言,在Java中要研究任何的东西都必须封装成对象,对象肯定会有对应的类
    集合根据特点不同有很多,对应的集合类也就有很多,这些集合类的共性不断向上抽取,就形成了集合的
    体系结构。

    单列集合
        Collection接口
            |-List接口
                |-ArrayList类
                |-LinkedList类
                |-Vector类
            |-Set接口
                |-HashSet类
                |-TreeSet类

    双列集合
        Map接口
            |-HashMap类
            |-TreeMap类


    学习体系结构,一般从上往下学,先学顶层的接口或者父类,再依次往下学习底层的实现类或者子类
    因为最顶层都是共性的抽取,它是体系结构的共性的内容,学完之后,下面的实现类或者子类只要学习特有的内容即可

Collection接口
    常用方法
        添加
            boolean add(E e):往后添加
        删除
            boolean remove(Object o)
            void clear()
            default boolean removeIf(Predicate<? super E> filter)
        判断
            boolean contains(Object o)
            boolean isEmpty()
         获取
            int size()
            Iterator<E> iterator()


    面试题:数组、字符串和集合分别如何获取长度?
         数组:数组名.length属性
         字符串:字符串.length()方法
         集合:集合.size()方法

    面试题:以下方法属于Collection接口中方法的是( C )
            A、E get(int index)
            B、E remove(int index)
            C、boolean add(E e)
            D、E set(int index,E e)
            注:Collection接口中没有任何一个和索引相关的方法

    迭代器(Iterator)
        用于集合迭代(遍历)的工具

        常用方法
                boolean hasNext() :判断是否还有下一个元素
                E next() :获取下一个元素
                    * 获取下一个
                    * 将光标往下移动一位
                void remove() :删除光标指向的元素

        迭代器遍历的步骤
            1、获取到迭代器
            2、循环判断是否有下一个元素
            3、如果有则进入循环内部获取下一个元素
            4、使用获取到的元素


        演示:迭代器遍历的同时进行删除操作
            如果直接使用集合的删除方法进行删除会出现ConcurrentModificationException异常
            并发修改异常,如果选择迭代器的方法进行删除则可以避免这个异常

    增强for循环(foreach)
        JDK1.5的新特性(自动拆装箱、泛型和增强for等...)

        格式:
            for(数据类型 变量名:容器){

            }
            容器:只能是数组和单列集合
            数据类型:容器中每一个元素的数据类型,其实和容器的数据类型和泛型一致
            变量名:依次记录的就是容器中的每一个元素

            快捷键:iter

            增强for在遍历集合的时候,底层使用的是迭代器,也可以将增强for称为迭代器的语法糖
            增强for在遍历数组的时候,底层使用的是普通for
        作用:用于方便地遍历数组和集合
List集合                      【重点】
    List接口
        特点
            1、存取有序,能够保证按照什么顺序存储的,就按照什么顺序取出
            2、有索引的,可以通过索引来操作其中的元素
            3、可以存储重复元素
        常用方法
            List接口是Collection接口的子接口,所以Collection接口中的所有方法,
            在List中都被继承下来了,都拥有。

            特有方法
                 void add(int index, E element)
                 E get(int index)
                 E remove(int index)
                 E set(int index, E element)

                这些特有方法都是和索引有关的

    集合的遍历方式
        方式一:迭代器             【所有单列集合的通用遍历方式】
        方式二:增强for           【所有单列集合的通用遍历方式】
        方式三:普通for           【只适用于List集合的遍历方式】


    数据结构
        栈:先进后出(FILO),后进先出(LIFO)
        队列:先进先出(FIFO),后进后出(LILO)
        数组:查询修改快,增删慢
        链表:查询修改慢,增删快


    ArrayList类
        ArrayList中实现List和Collection接口中的所有抽象方法

        底层原理:
            1、ArrayList底层初始创建一个长度为多少的对象数组?  10
            2、什么时候创建的这个长度为10的数组?              第一次调用add方法的
            3、扩容时机?                                  数组装满了
            4、如何扩容?                                  原数组的1.5倍

    LinkedList
        LinkedList中实现List和Collection接口中的所有抽象方法
        特有方法
            public void addFirst(E e) 在该列表开头插入指定的元素
            public void addLast(E e) 将指定的元素追加到此列表的末尾
            public E getFirst() 返回此列表中的第一个元素
            public E getLast() 返回此列表中的最后一个元素
            public E removeFirst() 从此列表中删除并返回第一个元素
            public E removeLast() 从此列表中删除并返回最后一个元素


    Vector
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值