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

tech2024-04-17  13

ArrayList类:

API介绍: 解析:

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

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] } } 底层实现:长度可变数组

常用功能方法(与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] } } 底层实现:

验证 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)