● 集合概述
● Collection接口
● List 接口及实现类
● List接口集合迭代
● Set 接口
● Set 接口集合迭代
● Map 接口
● Collections类
Collection接口
● Collection
接口定义了存取一组对象的方法,其子接口
Set
和
List
分别定义了
存储方式。
● List
中的数据有顺序
(
添加顺序
)
且可以重复。
● Set
中的数据不可以重复
List
接口及实现类
●
List接口继承了Collection接口,有三个实现的类
ArrayList
数组列表,底层采用数组存储。
LinkedList
链表列表
Vector
数组列表,添加同步锁,线程安全的
一.ArrayListDemo
ArrayList底层是数组结构,查询快,增删慢
package javacollection.list;
import java.util.ArrayList;
public class ArrayListDemo1 {
public static void main(String[] args) {
/*
* ArrayList数组集合,默认可以存储Object类型
* */
/* ArrayList arrayList = new ArrayList();
arrayList.add(("a"));
arrayList.add(1);
arrayList.add(true);
System.out.println(arrayList);//[a, 1, true]
实际开发中,一般建议一个集合对象中最好只存储一种单一类型
使用泛型语法,为集合指定一个类型
*/
ArrayList<String> arrayList0 = new ArrayList();//默认10容量
arrayList0.add("H");
ArrayList<String> arrayList = new ArrayList();
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
arrayList.add("d");
arrayList.add("a");
arrayList.add(0,"e");//向指定位置添加元素
arrayList.addAll(arrayList0);//把另一个集合数据添加进来
//System.out.println(arrayList.remove(2));//根据所以删除对应的元素 并返回删除的元素
//System.out.println(arrayList.remove("o"));//根据内容删除第一次匹配的元素,删除成功返回true,否则返回falsr
//arrayList.clear();//清空集合元素
System.out.println(arrayList.isEmpty());//判断集合是否为空 为空返回true
System.out.println(arrayList.contains("b"));//判断集合中是否包含指定元素
arrayList.set(1,"E");//替换指定位置的元素
System.out.println(arrayList.get(3));//获取指定位置的元素
System.out.println(arrayList.indexOf("a"));//获取指定元素的位置
System.out.println(arrayList.size());//返回的是集合中实际添加的元素个数
System.out.println(arrayList);
}
}
二.LinkedListDemo
LinkedList 底层是链表结构,查询慢,增删效率高
package javacollection.list;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(4);
linkedList.add(4);
/* //linkedList.add(1,3);像指定位置上加
linkedList.addFirst(20);
linkedList.lastIndexOf(10);*/
System.out.println(linkedList.get(3));
linkedList.set(2,40);
//linkedList.contains()
//linkedList.getFirst();
//linkedList.getLast()
System.out.println(linkedList.remove(2));
System.out.println(linkedList.removeFirst());
System.out.println(linkedList.removeLast());
System.out.println(linkedList);
LinkedList<String> linkedList1 = new LinkedList<>();
/*
* 栈和队列
*
* 队列:排队 从尾添加 从头
* */
linkedList1.addLast("张三1");
linkedList1.addLast("张三2");
linkedList1.addLast("张三3");
linkedList1.addLast("张三4");
System.out.println(linkedList1.removeFirst());
}
}
三.VectorDemo
1. 线程安全
Vector
是线程安全的,它的大部分方法(如 add
、remove
、get
等)都使用了 synchronized
关键字进行同步,这保证了在多线程环境下对 Vector
进行操作时不会出现数据不一致的问题
import java.util.Vector;
public class VectorExample {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
// 线程安全的添加元素操作
vector.add("element");
}
}
2. 动态数组
Vector
可以根据需要动态地调整其容量。当元素数量超过当前容量时,Vector
会自动增加其容量,以容纳更多的元素。
3. 随机访问
Vector
支持随机访问,通过索引可以快速地访问或修改指定位置的元素
import java.util.Vector;
public class VectorRandomAccess {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
vector.add("apple");
vector.add("banana");
// 随机访问元素
String element = vector.get(1);
System.out.println(element);
}
}