信息发布→ 登录 注册 退出

Java中的List接口实现类解析

发布时间:2026-01-11

点击量:
目录
  • Java的List接口实现类
    • 实现类ArrayList
    • 实现类LinkedList
    • 实现类Vector
  • List三个实现类

    Java的List接口实现类

    实现类ArrayList

    ArrayList类相当于一个容量可变的动态数组,当超过了他的大小时,类集自动增加,当对象被删除后,数组就可以缩小。

    import java.util.*;
    public class ListDemo {
        public static void main(String args[]){
            Collection c1 = new ArrayList();//实例化一个具体的子类对象
            for(int i=0;i<5;i++){
                c1.add(new Integer(i));
            }//循环添加5个整型类对象
            System.out.println("c1:"+c1);
            Collection c2 = new ArrayList();
            c2.addAll(c1);
            c2.remove(new Integer(3));
            c2.add("hehe");
            System.out.println("c2:"+c2);
            Iterator it = c2.iterator();
            while(it.hasNext()){
                Object obj = it.next();
                System.out.println("Iterator遍历c2  "+obj+"\t");
            }
        }
    }

    运行结果:

    c1:[0, 1, 2, 3, 4]
    c2:[0, 1, 2, 4, hehe]
    Iterator遍历c2  0    
    Iterator遍历c2  1    
    Iterator遍历c2  2    
    Iterator遍历c2  4    
    Iterator遍历c2  hehe    

    注:

    Collection的打印结果以方括号括住,每个元素之间以逗号相隔。由ArrayList的结构特点可知,该类取出元素有较高的效率,但元素做删除或插入操作较慢。

    实现类LinkedList

    import java.util.LinkedList;
    public class LinkedListDemo {
        public static void main(String args[]) {
            LinkedList linkedList = new LinkedList();
            linkedList.add("F");
            linkedList.add("B");
            linkedList.add("D");
            linkedList.add("E");
            linkedList.add("C");
            System.out.println("显示初始化后linklist的内容:" + linkedList);
            linkedList.addLast("Z");
            linkedList.addFirst("AO");
            linkedList.add(1, "AI");
            System.out.println("显示添加操作后linkedList内容:" + linkedList);
            linkedList.remove("F");
            linkedList.remove(2);
            System.out.println("显示删除操作后的linkedList内容:" + linkedList);
            linkedList.removeFirst();
            linkedList.removeLast();
            System.out.println("显示删除操作后linkList内容:" + linkedList);
            Object object = linkedList.get(2);
            //修改内容
            linkedList.set(2, (String) object + "Chaanged");
            System.out.println("现实操作后linklist内容:" + linkedList);
        }
    }
    

    运行结果:

    显示初始化后linklist的内容:[F, B, D, E, C]
    显示添加操作后linkedList内容:[AO, AI, F, B, D, E, C, Z]
    显示删除操作后的linkedList内容:[AO, AI, D, E, C, Z]
    显示删除操作后linkList内容:[AI, D, E, C]
    现实操作后linklist内容:[AI, D, EChaanged, C]

    Process finished with exit code 0

    注:

    LinkedList容器类提供了一个链接列表数据结构,通过连接指针来关联前后两个元素。因为LinkedList是使用双向链表实现的容器,所以针对频繁的插入或删除元素,它适合实现栈和队列。

    实现类Vector

    Vector类提供了实现了可增长数组的功能,随着更多元素加入其中,数组变得更大,在删除一些元素之后,数组变小。Vector类的大多数操作和ArrayList类相同,区别之处在于Vector类是线程同步的。

    import java.util.Vector;
    public class VectorDemo {
        public static void main(String args[]){
            Vector v = new Vector();
            v.add("one");
            v.add("two");
            v.add("three");
            System.out.println("显示向量初始值:"+v.toString());
            v.insertElementAt("zero",0);
            v.insertElementAt("oop",3);
            System.out.println("显示插入后向量值:"+v.toString());
            v.setElementAt("three",3);
            v.setElementAt("four",4);
            System.out.println("显示修改后元素向量值:"+v.toString());
            v.removeAllElements();
            System.out.println("显示全删除后向量值:"+v.toString());
        }
    }
    

    运行结果:

    显示向量初始值:[one, two, three]
    显示插入后向量值:[zero, one, two, oop, three]
    显示修改后元素向量值:[zero, one, two, three, four]
    显示全删除后向量值:[]

    Process finished with exit code 0

    注解:

    Java的集合与数组的区别在于,在创建Java数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能被改变。为了使程序能方便的存储,检索和操纵数目不固定的一组数组,JDK类库创建了Java集合,所有Java集合类都位于java.util包中。另外Java集合中不能存放基本类型数据,而只能存放对象的引用。

    List三个实现类

    List 是有序的 Collection。

    List 一共三个实现类分别是 ArrayListVector LinkedList

    • ArryList底层通过数组实现,允许对元素进行快速随机访问,数组的缺点是元素之间不能有间隔。当数组大小不满足时,需要增加存储能力,即将已有数组的数据复制到新的存储空间。插入和删除的代价较高,适合于随机查找和遍历。线程是不安全的。排列有序,数据可重复
    • Vector 底层通过数组实现,支持线程的同步,即某一时刻只有一个线程能够写Vector,但实现同步的代价很高,访问速度比ArryList慢,线程安全但效率低。排列有序,数据可重复
    • LinkList 底层用链表实现适于数据的动态插入和删除,但随即访问和遍历的速度慢。排列有序,但数据不可重复。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!