集合2(实现类:ArrayList,LinkedList,Vector)

ArrayList类:

API介绍:
在这里插入图片描述解析:

  • ArrayList类是List接口直接实现类,其底层由可变数组构成。支持null,但线程不安全。如果需要线程安全集合请Vector。
  1. 构造方法:

在这里插入图片描述

import java.util.ArrayList;
import java.util.Collection;

public class Text2 {
    public static void main(String[] args) {
        //ArrayList 设置集合容器大小为10
        ArrayList list1 = new ArrayList();

        //ArrayList(int) 设置集合容器大小
        ArrayList list2 = new ArrayList(100);

        Collection col = new ArrayList();
        col.add(1);
        col.add(10);
        //ArrayList(Collection) 初始化集合元素
        ArrayList list3 = new ArrayList(col);
        System.out.println(list3);//[1, 10]
        
    }
}
  1. 底层实现:长度可变数组

在这里插入图片描述

  1. 常用功能方法(与List接口一致)
import java.util.ArrayList;

public class Text3 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(1);
        list.add("abc");
        list.add(1,"wahaha");
        System.out.println(list);//[1, wahaha, abc]

        list.remove("abc");
        list.remove(0);//下标
        System.out.println(list);//[wahaha]

        list.set(0,"zzz");//修改
        System.out.println(list.get(0));//获取 zzz

    }
}

LinkedLis类:

API介绍:

在这里插入图片描述解析:

  • LinkedList类是List接口的直接实现类,底层由双层链表组成,允许null值,但线程不安全。

1,构造方法:

在这里插入图片描述

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;

public class Text4 {
    public static void main(String[] args) {
        //LinkedList() 空列表
        LinkedList list = new LinkedList();

        //LinkedList(Collection) 用于初始化LinkedList对象元素
        Collection col = new ArrayList();
        col.add("1");
        LinkedList list2 = new LinkedList(col);
        System.out.println(list2);//[1]
    }
}
  1. 底层实现:

在这里插入图片描述

  1. 验证 ArrayList 添加/删除效率低,LinkedList效率高
import java.util.ArrayList;
import java.util.LinkedList;

public class Text5 {
    public static void main(String[] args) {
        //分析:20000次在集合中添加元素对象1
        long start = System.currentTimeMillis();
        //ArrayList list = new ArrayList();
        LinkedList list = new LinkedList();
        for (int i = 0; i <20000 ; i++) {
            list.add(0,1);//在集合头部添加元素
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);//43  11

    }
}

结论:

  • . LinkedList 添加/删除元素效率高,ArrayList 添加/删除元素效率低。

4,验证 ArrayList 查询效率高,LinkedList效率低

import java.util.ArrayList;
import java.util.LinkedList;

public class Text6 {
    public static void main(String[] args) {
        //分析:通过获取20000次随机下标进行查询,分析效率。
        //LinkedList list = new LinkedList();
        ArrayList list = new ArrayList();
        for (int i = 0; i <20000 ; i++) {
            list.add(1);//先给集合添加20000个元素
        }

        long start = System.currentTimeMillis();
        for (int i = 0; i <20000 ; i++) {
            int index = (int)(Math.random()*20000);//随机下标
            list.get(index);
        }
        long end = System.currentTimeMillis();//179  13
        System.out.println(end-start);
    }
}

结论:

  • LinkedList 查询元素效率低,ArrayList 查询元素效率高

5,常用特有功能方法:

  • 栈方法:
  • 栈是一种数据结构,特点:先进后出

在这里插入图片描述

import java.util.LinkedList;

public class Text7 {
    public static void main(String[] args) {
        //模仿栈结构存取对象
        LinkedList list = new LinkedList();
        //.push(Object) 将新对象添加第一个对象前方
        list.push(1);
        list.push(2.3);
        list.push(true);
        System.out.println(list);//[true, 2.3, 1] 先进的放栈底

        //Object.pop() 删除第一个(栈顶)对象并返回
        Object obj = list.pop();
        System.out.println(list);//[2.3, 1]
    }
}
  • 队列方法:
  • 队列是一种数据结构,特点:先进先出

在这里插入图片描述
在这里插入图片描述

import java.util.LinkedList;

public class Text7 {
    public static void main(String[] args) {
        //模仿队列结构存取对象
        LinkedList list = new LinkedList();
        //offer(Object) 将新对象添加到结尾
        list.offer(1);
        list.offer(2.3);
        list.offer(true);
        System.out.println(list);//[1, 2.3, true]

        //Object.poll() 删除第一个对象
        Object obj = list.poll();
        System.out.println(list);//[2.3, true]
   }
}        

Vector类(了解,版本太旧):

API介绍:
在这里插入图片描述

解析:

  • Vector类是List接口的直接实现类,底层由长度可变数组组成,但线程安全。是一个又老又旧且效率低的集合对象,开发中很少使用

1,构造方法:
在这里插入图片描述

import java.util.ArrayList;
import java.util.Collection;
import java.util.Vector;

public class Text8 {
    public static void main(String[] args) {
        //Vector() 空集合,默认大小:10
        Vector vector = new Vector();

        //Vector(Collection) 初始化集合
        Collection col = new ArrayList();
        col.add(1);
        Vector vector1 = new Vector(col);
        System.out.println(vector1);//[1]

        //Vector(int) 指定初始容量大小
        Vector vector2 = new Vector(100);

        //Vector(int, int) 指定初始容量大小 和 容量增量值
        Vector vector3 = new Vector(100,200);
    }
}

2,常用功能方法(与List接口一致)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值