• 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

  • 相关阅读:
    LeetCode 83. Remove Duplicates from Sorted List (从有序链表中去除重复项)
    LeetCode 21. Merge Two Sorted Lists (合并两个有序链表)
    LeetCode 720. Longest Word in Dictionary (字典里最长的单词)
    LeetCode 690. Employee Importance (职员的重要值)
    LeetCode 645. Set Mismatch (集合不匹配)
    LeetCode 500. Keyboard Row (键盘行)
    LeetCode 463. Island Perimeter (岛的周长)
    115.Distinct Subsequences
    55.Jump Game
    124.Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/Yuanpp/p/8445702.html
Copyright © 2020-2023  润新知