• Java精选笔记_集合【List(列表)接口】


    List(列表)接口

    简介

    List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合
    元素是有序的,即元素的存入顺序和取出顺序一致,元素可以重复,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素


    ArrayList al=new ArrayList();
    增加 : al.add();
    在指定位置添加:al.(index,"");
    删除指定位置元素:al.remove(index);
    修改元素:al.set(index,"");
    通过角标获取元素:al.get(index);

    获取所有元素

    for(int x=0;x<al.size();x++) {

         al.get(x);    

    }


    Iterator it=al.iterator();
    while(it.hasNext()) {

         it.next(); 

    }


    通过indexof获取对象的位置:al.indexof("字符串");
    获取列表中两个位置之间的数,返回List:List sub=al.subList(1,3)    返回角标1和3之间的数


    在迭代集合过程中,不能对集合进行其他操作,如添加删除等,这时就需要迭代器可以对迭代器的对象进行操作,但是由于Iterator迭代器只有 remove功能,所以建议使用其子接口ListIterator,它具备删除 remove 添加 add 修改 set 等功能,但此功能是List特有的
    ListIterator列表迭代器:是List集合特有的迭代器,是Iterator的子接口。可以对集合列表进行各种操作。
        ListIterator it=a1.ListIterator();
        while(it.hasNext()) { //正向遍历
             it.next();
             it.set(); //修改
        }
       //逆向遍历 
       it.hasPrevious;


    ArrayList集合

        ArrayList是List接口的一个实现类,它是程序中最常见的一种集合,是对AbstractList类的扩展

    三种构造方法

        ArrayList()方法:建立一个空的数组列表
        ArrayList(Collection c):方法建立一个数组列表,该列表由类c中的元素初始化
        ArrayList(int initialCapacity):方法建立一个数组列表,该数组有指定的初始化容量(capacity)

    主要方法

        public boolean add(E o)  将指定的元素追加到列表的最后
        public void add(int index,E element)  将参数element表示的元素插入此列表中参数index表示指定位置中
        public boolean addAll(Collection c)  将Collection中所有元素追加到此列表的尾部
        public void clear()  删除列表中的所有元素
        public boolean contains(Object elem)  判断此列表是否包含参数elem表示的指定元素
        public get(int index)  返回列表中指定位置上的元素
        public boolean isEmpty()  判断此列表中有没有元素
        public remove(int index)  删除列表中指定位置上的元素
        public set(int index, E element)  用参数element表示指定的元素代替列表中指定位置上的元素。
        public int size()  返回列表中的元素数
        public Object[] toArray()  返回一个包含列表中所有元素的数组
        public T[] toArray(T[] a)  返回一个包含列表中所有元素的数组
        void trimToSize()  将容量调整为该列表的当前大小


        在ArrayList内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。


        ArrayList集合中大部分方法都是从父类Collection和List继承过来的,其中add()方法和get()方法用于实现元素的存取。

        底层使用是的数组结构。特点:查询速度很快,但是增删稍慢。 同步的


    创建集合容器
    ArrayList  al=new ArrayList ();
      //1.添加元素:
         a1.add("");
         a1.add("");
      //2.获取长度,集合个数
         a1.size();
      //3.删除元素
         a1.remove();
      //4.清空集合
         a1.clear();
      //5.判断
         a1.contains()  是否包含
         a1.isEmpty()  是否为空
      //6.取交集
         a1.retainAll(a2);  取两个集合中交集的元素。

    LinkedList集合

       LinkedList克服了ArrayList集合在查询元素时速度很快,但在增删元素时效率较低的局限性。是对AbstractSequentialList类的扩展。
        该集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来
    当插入一个新元素时,只需要修改元素之间的这种引用关系即可,删除一个节点也是如此。
    底层使用的是链表结构。特点:增删速度快,但是查询稍慢  不同步

    两种构造方法

        LinkedList()方法                       建立一个空的链接列表

        LinkedList(Collection c)方法    建立一个链接列表,该列表由类c中的元素初始化

    特有方法

        add(int index,E element)    指定位置插入指定的元素

        addFirst();                          往前添加

        addlast(0;                           往后添加

        getFirst();                           获取头值,永远是第一个值

        getLast();                           获取尾值

        removeFirst();                    删除并返回头元素  出现NuSuchElementException异常

        removeLast();                    删除并返回尾元素


    jdk1.6中出现了替代方法:

    添加
        offerFirst()
        offerlast()
    获取
        peekFirst()
        peekLast()
    删除
        pollfirst()
        polllast()
        LinkedList llist=new LinkedList();

    Vector集合

        Vertor是List接口的一个实现类,用法与ArrayList完全相同,区别在于Vector集合是线程安全的,而ArrayList集合是线程不安全的
        在Vector类中提供了一个elements()方法用于返回Enumeration对象,通过Enumeration对象就可以遍历该集合中的元素
        底层使用是的数组结构。是同步的
        Vector v=new Vector();
        v.add();
        v.add();
        Enumeration en=new Enumeration();
        while(en.hasMoreElements()) {
            en.nextElement();
        }

    构造方法

        Vector()方法                         构造一个原始大小为10的默认矢量
        Vector(int size)方法              构造一个原始大小由size指定的矢量
        Vector(int size,int incr)方法   构造一个矢量原始大小由size指定,并且增量由incr指定
        Vector(Collection c)方法       构造一个包含了类集c中元素的矢量


        所有的矢量开始都有一个原始的容量。在这个原始容量达到之后,下次再存储时,矢量会自动为那个对象分配空间。通过分配超过需要的内存,矢量减小了可能产生的分配的次数,节约了时间

    增加元素的方法

        public void addElement( Object obj ) 将指定的组件添加到该向量的末尾,并将其大小增加1
        public void addElement( int index,Object obj ) 在向量的指定位置插入指定的元素obj,该位置及以后的元素位置后移
        public void insertElementAt( Object obj,int index )  将指定对象作为此向量中的组件插入到指定的index处

    stack类

        stack类是Vector的一个子类,它实现标准的后进先出堆栈Stack仅仅定义了创建空堆栈的默认构造方法。Stack()方法
    Stack类包括了Vector类定义的所有方法,同时增加了几种它自己定的方法
        public E push(Object item)  将元素引用压入栈顶
        public E pop()  删除栈顶元素。栈为空则会抛出EmptyStackException异常
        public E peek()  取得栈顶元素但不删除它。如果栈为空则会抛出EmptyStackException异常
        public boolean empty()  判断堆栈是否为空
        public int search(Object o)  返回Object对象在栈中所处的位置。其中栈顶元素位置为1,以后依次递增1。如果对象不在栈中则返回-1
        在栈的操作中,先压入栈的元素在栈的最底部,删除元素是从栈顶开始的。也就是最后压入栈的元素将会被先删除掉


    Dictionary类

    字典(Dictionary)是一个表示关键字/值存储库的抽象类,同时它的操作和映射(Map)很类似。
    Dictionary类已经被Map类所取代,已过时。


    Iterator接口

        用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器
        Iterator可以完成通过循环输出类集内容,从而获得或删除元素
        Iterator迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素

    集合取出元素的方式(通过迭代方法访问类集)
    Iterator it = a1.iterator();
    while(it.hasNext()) {

        it.next();

    }

    方法

        void add(Object obj)  将Obj插入列表中的一个元素前,该元素在下一次调用next()方法时被返回
        boolean hasNext()  如果存在下一个元素,则返回true,否则返回false
        boolean hasPrevious()  如果存在前一个元素,则返回true,否则返回false
        Object next()  返回下一个元素,如不存在,引发一个NoSuchElementException异常
        int nextIndex()  返回下一个元素的下表,如果不存在下一个元素,则返回列表的大小
        Object previous()  返回前一个元素,如不存在,引发一个NoSuchElementException异常
        void remove()  从列表中删除当前元素
        void set(Object obj)  将obj赋给当前元素。即上一次调用next()方法或previousfangfa后返回的元素

    ListIterator接口

        对Iterator的扩展,允许双向遍历列表,并且可以修改单元。
        Iterator迭代器提供了hasNext()方法和next()方法,通过这两个方法可以实现集合中元素的迭代,迭代的方向是从集合中的第一个元素向最后一个元素迭代,也就是所谓的正向迭代

    为了使迭代方式更加多元化,JDK中还定义了一个ListIterator迭代器,它是Iterator的子类,该类在父类的基础上增加了一些特有方法。
  • 相关阅读:
    SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>
    hibernate用注解(annotation)配置sequence
    SSH(Struts2+Spring+Hibernate)框架搭建流程
    spring框架学习(一)
    struts2 s:if标签以及 #,%{},%{#}的使用方法
    js页面跳转参考代码大全
    Struts 2常用的Ajax标签
    Struts2文件上传(基于表单的文件上传)
    struts.custom.i18n.resources国际化
    Struts2常用标签
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7582144.html
Copyright © 2020-2023  润新知