Java中的List接口实现类解析

目录
  • 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 底层用链表实现适于数据的动态插入和删除,但随即访问和遍历的速度慢。排列有序,但数据不可重复。

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

(0)

相关推荐

  • Java源码解析之接口Collection

    一.图示 二.方法定义 我们先想一想,公司如果要我们自己去封装一些操作数组或者链表的工具类,我么需要封装哪些功能呢?不妨就是统计其 大小,增删改查.清空或者是查看否含有某条数据等等.而collection接口就是把这些通常操作提取出来,使其更全面.更通用,那现在我们就来看看其源码都有哪些方法. //返回集合的长度,如果长度大于Integer.MAX_VALUE,返回Integer.MAX_VALUE int size(); //如果集合元素总数为0,返回true boolean isEmpty(

  • 深入浅出讲解Java集合之Collection接口

    目录 一.集合框架的概述 二.集合框架(Java集合可分为Collection 和 Map 两种体系) 三.Collection接口中的方法的使用 四.集合元素的遍历操作 A. 使用(迭代器)Iterator接口 B. jdk5.0新增foreach循环,用于遍历集合.数组 五.Collection子接口之一:List接口 List接口方法 ArrayList的源码分析: JDK 7情况下: JDK 8中ArrayList的变化: LinkedList的源码分析: Vector的源码分析: 六.

  • Java集合的Collection接口和List接口详解

    目录 1集合的概念 2集合的父类Collection接口 2.1常用方法 2.2遍历 3List接口 3.1List接口常用方法 3.2遍历 4集合中元素的去重 总结 1集合的概念 把集合看做是一个容器,集合不是一个类,是一套集合框架,框架体系包含很多的集合类,java api提供了 集合存储任意类型(基本包装类型,引用类型) 集合对元素的增删查改操作起来非常方便的,专门提供很多方便操作的方法 开发中经常集合来操作数据的,开发地位比较高的,考虑对数据的操作效率上的问题 2 集合的父类Collec

  • Java Collection 接口和常用方法综合详解

    目录 1. Collection 接口实现类的特点 2. Collection 接口常用方法 3. Collection接口遍历元素方式1- 使用Iterator(迭代器) 4. Collection 接口遍历对象方式2- for 循环增强 5. 练习 1. Collection 接口实现类的特点 public interface Collection<E> extends Iterable<E> 1)Collection实现子类可以存放多个元素,每个元素可以是Object 2)有

  • Java List接口的集合使用详解

    目录 ArrayList集合 LinkedList类 LinkedList与ArrayList的区别: 总结 List接口继承collection接口,此接口可以对列表中的每个元素精确的控制,可以根据元素的索引来获取列表中的值,下面介绍常用的几种,ArrayList,LinkedList. ArrayList集合 ArrayList是一个动态修改的数组,它没有固定的大小,不需要自己分配空间,java本身已经初始化容量为10的大小,可以直接添加删除等一系列操作. ArrayList构造方法: Ar

  • java中List接口与实现类介绍

    目录 List接口介绍-ArrayList ArrayList源码结论 ArrayList源码分析 总结 List接口介绍-ArrayList 有序.可重复 线程不安全,因为没有synchronized修饰 ArrayList源码结论 ArrayList中维护了一个Object类型的数组elementData. transient Object[] elementData; // transient 表示该属性不会被序列化 当创建ArrayList对象时,如果使用的是无参构造器,则初始eleme

  • Java中的List接口实现类解析

    目录 Java的List接口实现类 实现类ArrayList 实现类LinkedList 实现类Vector List三个实现类 Java的List接口实现类 实现类ArrayList ArrayList类相当于一个容量可变的动态数组,当超过了他的大小时,类集自动增加,当对象被删除后,数组就可以缩小. import java.util.*; public class ListDemo { public static void main(String args[]){ Collection c1

  • 详解JAVA中的Collection接口和其主要实现的类

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的"子接口"如List和Set,详细信息可见官方文档http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/

  • 详解Java 中的 AutoCloseable 接口

    一.前言 最近用到了 JDK 7 中的新特性 try-with-resources 语法,感觉到代码相对简洁了很多,于是花了点时间详细学习了下,下面分享给大家我的学习成果. 二.简单了解并使用 try-with-resources语法比较容易使用,一般随便搜索看下示例代码就能用起来了.JDK 对这个语法的支持是为了更好的管理资源,准确说是资源的释放. 当一个资源类实现了该接口close方法,在使用try-with-resources语法创建的资源抛出异常后,JVM会自动调用close 方法进行资

  • java中xml进行报文发送和解析操作

    利用OKhttp网络框架,进行Maven项目管理 //报文发送 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.8.0</version> </dependency> //报文解析 <dependency> <groupId>xom</gr

  • Java中抽象类和接口的区别_动力节点Java学院整理

    接口 1 因为java不支持多重继承,所以有了接口,一个类只能继承一个父类,但可以实现多个接口,接口本身也可以继承多个接口. 2 接口里面的成员变量默认都是public static final类型的.必须被显示的初始化. 3 接口里面的方法默认都是public abstract类型的.隐式声明. 4 接口没有构造方法,不能被实例化. 5 接口不能实现另一个接口,但可以继承多个接口. 6 类如果实现了一个接口,那么必须实现接口里面的所有抽象方法,否则类要被定义为抽象类. 抽象类 1 如果将一个类

  • Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    接口的灵活性就在于"规定一个类必须做什么,而不管你如何做". 我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似. //定义接口InterA interface InterA { void fun(); } //实现接口InterA的类B class B implements InterA { public void fun() { System.out.pri

  • 浅谈Java中常用数据结构的实现类 Collection和Map

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个C

  • 全面了解Java中的内部类和匿名类

    Java内部类(Inner Class),类似的概念在C++里也有,那就是嵌套类(Nested Class),乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的设计者在内部类身上的确是用心良苦.学会使用内部类,是掌握Java高级编程的一部分,它可以让你更优雅地设计你的程序结构.下面从以下几个方面来介绍: 第一次见面 public interface Contents { int value(); } public interface

  • java 中 String format 和Math类实例详解

    java 中 String format 和Math类实例详解 java字符串格式化输出 @Test public void test() { // TODO Auto-generated method stub //可用printf(); System.out.println(String.format("I am %s", "jj")); //%s字符串 System.out.println(String.format("首字母是 %c",

  • java公众平台通用接口工具类HttpConnectUtil实例代码

    实例如下: package com.common.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.ConnectException; import java.net.HttpURLConnection; import java.net.URL; import

随机推荐