Java 集合6 List 的常用的子类

List 中的常见子类介绍: Vector ArrayList LinkedList
ArrayList
API:是List 接口的大小可变数组的实现类, 实现所有可选列表操作。除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。 (这个类是大致相当于Vector,不同之处在于它是不同步的)。

数据结构为数组,长度是可变的(原理是:创建新数组+复制),查询的速度快(相对的)
弊端:在删除元素时会比较麻烦
Vector
API:从Java 2平台v1.2,这个类被改造为实现List接口,使其成为成员Java Collections Framework 。 与新集合实现不同, Vector是同步的。 如果不需要线程安全的实现,建议使用ArrayList代替Vector

数据结构和ArrayList 一样。查询速度慢,增删更慢
区别:ArrayList 不同步 Vector 同步
其实在开发中ArrayList 已经将Vector 替代掉了,当我们要进行并发访问时,有相应的解决办法。

LinckList
API: List 的链表实现,具备列表的所有操作

数据结构:链表结构,不同步,增删的速度很快
弊端:在元素查找时效率低。 数组的查找时按照下标以此查找,而链表是通过地址的联系,按照地址查找,效率更低
ArrayList 中的方法和使用都和List差不多

——————————————————–详解 LinkedList
数据结构为链表,可以表示堆栈,队列
特有方法
都是围绕头和尾进行的
addFirst()
addLast()

getFirst()//获取头部元素
getLast()

removeFirst()//获取头部元素并且删除
removeLast()

LinkedList link = new LinkedList();//创建链表
while(!link.isEmpty){
    System.out.println(link.removeFirst());//每次都取头元素,再删除头元素
        }

面试题:利用LinkedList 创建一个堆栈或者队
**、将解决办法封装成对象向用户提供——创建一个堆栈或队列的数据结构对象,该对象中使用LinkedList 来实现
用户要使用堆栈或者是队列结构时,直接使用对象**
代码:

package Collection;
import java.util.*;
//利用LinkedList 创建一个堆栈或者是队列结构
/*
思路:创建一个堆栈或队列的数据结构对象,该对象中使用LinkedList  来实现
用户要使用堆栈或者是队列结构时,直接使用对象
 */
class Queue{
    //1.封装一个链表数据结构
    private LinkedList link;
    //2.通过构造方法在队列初始化时,初始化链表对象
    Queue(){
        link = new LinkedList();
    }

    //3.提供各种方法
    //添加元素
    public void myAdd(Object obj){
        link.addFirst(obj);
    }
    //获取元素
    public Object myGet(){
        return link.removeLast();
    }
    //判断队列是否为空,为空则为真
    public boolean isNull(){
        return link.isEmpty();
    }
}
public class LinkedListTest {
    public static void main(String[] args){
        //使用被封装成对象的队列
        Queue q = new Queue();
        //添加元素
        q.myAdd("itcast1");
        q.myAdd("itcast2");
        q.myAdd("itcast3");
        q.myAdd("itcast4");
        //获取元素
        while(!q.isNull()){
            System.out.println(q.myGet());
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Stitch__/article/details/82356288