zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    intent-filter 之 data 「scheme, host, port, mimeType, path, pathPrefix, pathPattern」
    Android 自定义RecyclerView 实现真正的Gallery效果
    Android手势监听类GestureDetector的使用
    Android 屏幕手势滑动中onFling()函数的技巧分析
    onTouchEvent方法的使用
    Android 手势&触摸事件
    android关闭日志
    android intent和intent action大全
    调用新浪微博显示用户信息
    android 反编译
  • 原文地址:https://www.cnblogs.com/Yuanpp/p/8445702.html
Copyright © 2011-2022 走看看