JAVA基础笔记——List

包装类   数学相关  日期相关
    字符串相关   集合相关  异常相关
    IO相关   线程相关   网络相关   反射注解   *GUI

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    变量---容器
        存储一个元素

    数组---容器
    一组具有某种特性的数据存放在一起
        存储一组元素(数据类型一致)    长度固定

    集合---容器  与数组类似  集合的长度存储之后还能改变
    集合是用来存储一组元素
    可以理解为集合是我们封装的Box  只不过比我们写的更加的优秀  更多的方法

================================================================================================

                集合java.util
    Collection            Map
    存储的都是value            存储的是以key-value形式存在
    List        Set    
    有序可重复    无序无重复    key无需无重复 value无需可重复

    序 : 顺序    添加进去的元素  取得元素的顺序一致   注意指的不是集合自己的顺序
    重复:两个对象元素一致

    ArrayList  Vector区别--->StringBuilder  StringBuffer


    List集合
    1.ArrayList   3.Vector   2.LinkedList
    
    1.ArrayList----->底层就是一个数组
        所属的包 java.util
        如何创建对象
        无参数构造方法    带默认空间的构造方法    带collection参数的构造方法
        常用的方法---小容器
            存 add
            取 get
            删 remove
            改 set
            个数  size

            add(E e)   add(int index,E e)
            addAll(Collection c);   add(int index,Collection c)
            clear();将集合内的全部元素清除
            boolean = contains(Object);找寻某一个给定的元素是否在集合中拥有
            ensureCapacity(int minCapacity);
            E = get(int index);
            int = indexOf(Object obj);  lastIndexOf();
            boolean = isEmpty();
            Iterator = list.iterator();//迭代器
            remove(int index)  remove(Object obj)
            removeAll()差集
            retainAll();交集

            E = set(int index,E value)//修改元素
            int size();
            List = subList(int begin,int end);//截取集合的一段
            toArray();    集合变成数组
            toArray(T[] );
            trimToSize();// 变成有效元素个数那么长

================================================================================================

        关于泛型的问题:
        由于arrayList底层是一个Object[]  什么类型都可以存进去
        取出来的时候多态的效果 需要自己造型 显得用起来非常的麻烦
        JDK1.5之后--->泛型
        用来规定数据类型的,定义的时候用一个符号代替某种类型
        在使用的时候用具体的数据类型 将定义的那个符号替换掉
        泛型可以用在哪里?
        1.泛型类
            类定义的时候描述某种数据类型  集合的使用就是这样
        2.泛型接口
            与泛型类的使用基本一致   子类实现接口时必须添加泛型
        3.泛型方法
            方法调用时传参数   方法的泛型与类无关   带有泛型的方法可以不放在带有泛型的类中
        4.高级泛型  规范边界  extends  super

    =============================================================================================
        总结
        集合有很多类  非常庞大的一个系统
        1.了解集合的每一个具体的分支 各自特点
        2.常用的集合的方法
        3.每一个集合的特点
        4.集合底层的原理
        5.最好能手动自己封装

================================================================================================

 

List

    Vector类
    1.java.util包
    2.是ArrayList集合的早期版本    (StringBuffer早期  StringBuilder后来)
        Vector底层也是利用(动态)数组的形式存储
        Vector是线程同步的(synchronized)  安全性高  效率低
    3.扩容方式与ArrayList不同
        默认是扩容2倍   可以通过构造方法创建对象时修改这一机制
    4.构造方法
    5.常用方法

    Stack类    栈
    1.java.util包
    2.构造方法只有一个无参数
    3.除了继承自Vacton类的方法外还有特殊的方法
        push(E e)将某一个元素压入栈顶(add())
        E = pop()将某一个元素从栈顶取出并删掉(E = remove())
        E = peek()查看栈顶的一个元素 不删除(get())
        boolean = empty()判断栈内元素是否为空(isEmpty())
        int = search()查找给定的元素在占中的位置(indexOf())
    4.中国象棋   悔棋
        栈中存储每一次操作的步骤
        撤销功能

    Queue接口
    1.java.util        通常子类LinkedList   ArrayDeque
    2.通常无参数构造方法创建
    3.一般方法
        add()
        element()---->get()
        remove()
        boolean = offer(E e);//相当于add    不会抛出异常
        E = peek();//相当于 element方法
        E = poll();剪短//  相当于remove()
    4.双十一零点秒杀
        所有进入秒杀系统的人存入队列

    ArrayList
    LinkedList类
    1.java.util包    自己封装过LinkedBox   内部类Node对象(节点 prev item next)
    2.底层使用双向链表的数据结构形式来存储
        适合于插入或删除  不适合遍历轮询
    3.构建对象
        无参数构造方法   带参数的构造方法(collection)
    4.常用的方法
        增删改查   add()  remove()  set()  get()  size()    offer  poll   peek
        手册中提供的其他常用方法
        addAll   addFist   addLast()  clear()  contains()
        element()  getFirst()  getLast()  indexOf()  lastIndex()
        .....
    5.插入删除的特性是否像想的那样
        对比ArrayList  Linked

你可能感兴趣的:(JAVA)