List集合基础

Posted Shuu丶_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List集合基础相关的知识,希望对你有一定的参考价值。

集合:
数据结构(数据的组织方式和存储方式)不同导致了集合的不同
不同的集合向上抽取最终获得一个Collection集合
单列集合:
        collection




    List接口                           Set接口



ArrayList              LinkedList        HashSet        LinkedHashSet


双列集合:
        Map



HashMap            LinkedHashMap


集合的clone()方法,产生的集合副本传入一个Object类中,然后输出的话就是按照[,]的格式输出,输出的方式和集合相同

collection集合的常用方法
1.添加           boolean add(E e);
2.删除        boolean remove(Object obj);
3.清空        void clear();
4.是否包含        boolean contains(Object obj);
5.是否为空        boolean isEmpty();
6.求集合大小    int size();
7.将集合转化为数组    Object[] toArray();

集合的遍历方式:
1.转化成数组遍历
2.用迭代器Iterator

Iterator迭代器:
    使用方式:
    Iterator<E> it = 集合名.itrator();
    (如果集合里用的是基础类型,这个<E>可以省略)
Iterator的方法:
    boolean hasnext();
            迭代器是否还有下一个元素
    Object next();
            迭代器下一个元素值

迭代器相当于集合的一个副本,当迭代期间发现与集合不同就会抛出异常
Iterator的优缺点:
优点:方便使用
缺点:迭代期间不能进行增删操作,否则会产生异常(指针出现错误)
所以解决方法:
1.不使用Iterator,而是使用ListIterator,并使用ListIterator的add方法
      因为ListIterator和Iterator不同,他有n+1个指针出现的位置(Iterator有n个),允许进行遍历,迭代期间修改列表并获得迭代器在列表中的当前位置。
2.老老实实用if


泛型:
  将数据类型在编译期间就确定好的引用类型


增强for
 格式:
         for(数据类型   变量名: 集合名){
         }
注意:增强for使用期间不能进行增删操作,因为for实现的底层是迭代器

链表:next指针   
特点:查询慢,增删快(直接将下一个值的指针指向其他位置就好了)

栈和队列:栈是先进后出,队列是先进先出
特点:查询快,增删慢


List特点:
1.有序(存储的位置和读取的顺序是一致的)
2.有整数类型的索引(从0开始)
3.允许有重复

特有的功能(因为继承自Collection接口所以有自己的实现(虽然自己本身也是接口))
1.添加元素            void add(int index,E element);(注意和Collection的不同,这个返回值是void,并且有索引)
2.根据索引返回指定位置的元素    E get(int index);
3.移除指定索引处的元素    E remove(int index);
4.修改指定位置的元素        E set(int index,E element);
注意返回值类型

ArrayList和LinkedList的区别:
ArrayList底层是数组,查询快,增删慢(只需要指定索引就能查询,但是增删需要遍历)
LinkedList底层是链表,查询慢,增删快(只需要改变指针的位置就能增删,但是查询就只能遍历)

LinkedList的特有功能
1.添加
       void addFirst(E e);在列表开头添加元素
       void addLast(E e);在列表尾部添加元素
2.查询
       E getFirst();查询列表开头的元素
       E getLast();查询列表尾部的元素
3.删除
       E removeFirst();删除列表开头的元素
       E removeLast();删除列表尾部的元素

注意返回值,查询返回值是E正常,但是删除返回值也是E

以上是关于List集合基础的主要内容,如果未能解决你的问题,请参考以下文章

List集合基础

Java基础——集合源码解析 List List 接口

python基础集合

零基础学Java—List集合(三十九)

JAVA-基础(List及其子类)

python--基础集合