Java集合框架主要接口及实现类详解

目录

Java集合框架主要接口

Java集合框架主要实现类:

1.ArrayList类

2.LinkedList类

3.Vector类

4.HashSet类

5.TreeMap类


Java集合框架是Java编程语言提供的一组接口,用于处理对象集合。Java集合框架中包括了一系列的接口、实现类和算法,可以方便地操作和管理各种类型的集合数据。

Java集合框架主要包括以下接口:

  1. Collection接口:是所有集合接口的根接口,提供了基本的集合操作,如添加、删除、遍历等操作。

  2. List接口:是Collection接口的子接口,提供了有序的集合,可以通过索引访问集合中的元素。

  3. Set接口:也是Collection接口的子接口,提供了无序的集合,集合中不允许有重复元素。

  4. Map接口:是一个映射接口,提供了一种将键映射到值的方式,可以通过键来访问值。

框架体系图:

Java集合框架主要接口及实现类详解_第1张图片

Java集合框架中的实现类主要有:

1.ArrayList类:实现了List接口,提供了可变长度的数组,可以通过索引访问集合中的元素。

基本使用示例:

List list = new ArrayList(10);  //创建一个ArrayList集合(接口),集合的初始容量为10;若未给集合设置容量,默认容量为10

list.add("张三");  //新增一个元素到集合的最后面
list.add(1,"李四");  //新增一个元素到集合的指定下标(1)

//将一个集合中的所有元素追加到另一个集合的后面
List list2 = new ArrayList();
list2.add("王五");
list2.add("赵六");
list2.add("小七");
list .addAll(list2);  //将list2(集合)中的所有元素追加到list(集合)中;也可多加一个下标,就是将list2(集合)的所有元素添加到list(集合)中的指定下标位置,例如:list.addAll(1,list2);
for (Object name: list   //循环遍历list集合中的所有元素
) {
    System.out.println(name);
}         

控制台:

Java集合框架主要接口及实现类详解_第2张图片

特点如下:

  • 大小可变:ArrayList类可以根据需要自动调整大小。
  • 随机访问:ArrayList类支持随机访问,可以像数组一样使用索引来访问元素。
  • 速度快:ArrayList类通常比Vector类更快,因为它是多线程,线程是不安全的。
  • 可以包含任何类型的对象:ArrayList类可以容纳任何类型的对象,包括基本类型和引用类型。
  • 查询效率高:因为有索引可以肆意查询任意元素,但在插入删除方面较慢,因为这两个操作一旦发生,后面所有元素的索引都随之改变,例如删除一个元素,那么此元素后面的所有元素都会自动往前顶一位;插入一个元素,那么此元素后的所有元素都会自动往后推一位

2.LinkedList类:同样实现了List接口,提供了基于链表的集合,可以高效地进行插入和删除操作。

基本使用示例:

LinkedList list = new LinkedList();  //创建一个LinkedList集合(接口)

list.add("a");  //将指定元素(a)追加到此列表(list)的末尾

list.add(1, "b");  //在此列表(list)中的指定下标位置(1)插入指定的元素(b)

LinkedList list2 = new LinkedList();  //创建另一个LinkedList集合
list2.add(123);  //初始一个数据
list.addAll(list2);  //将指定集合(list2)中的所有元素追加到此列表(list)的末尾

LinkedList list3 = new LinkedList();  //创建另一个LinkedList集合
list3.add(456);  //初始一个数据
list.addAll(1, list3);  //将指定集合(list3)中的所有元素插入到此列表(list)中,从指定的下标位置(1)开始

list.addFirst("c");  //新增一个元素到集合的第一个位置

list.addLast("d");  //新增一个元素到集合的最后一个位置

boolean isIn = list.contains("a");  //如果此列表(list)包含指定元素(a),则返回true,反之返回false
System.out.println(isIn);

for (Object info:list  //循环遍历list集合中的所有元素
             ) {
    System.out.println(info);
}

控制台:

Java集合框架主要接口及实现类详解_第3张图片

特点如下:

  • 链结点:LinkedList中每个元素都是一个链结点对象,每个链结点对象包括该元素的值和前后两个链结点的引用。
  • 随机访问:由于LinkedList没有像数组一样的索引,因此不能像ArrayList那样进行随机访问。
  • 插入和删除效率快:LinkedList在进行插入和删除操作时,只需要修改前后链结点的引用即可,因此这些操作比ArrayList快。
  • 内存占用少:由于LinkedList的实现方式,每个元素只需要存储它的值和前后两个链结点的引用,因此内存占用比ArrayList少。

3.Vector类:是一个动态数组,它可以在运行时自动调整大小。它类似于数组,但它的大小是可变的,而不是固定的。

基本使用示例:

Vector vector = new Vector(10, 3);  //创建Vector集合容量为10,容量增量的空向量为3

vector.add("张三");  //新增一个指定元素到Vector的末尾
vector.add(1, "李四");  //新增一个指定元素到Vector的指定下标位置
vector.addElement(6);

System.out.print("第一个元素:" + vector.get(1));

System.out.println("返回克隆:" + vector.clone());  //返回此向量的克隆

Object[] ojb = new Object[5];
vector.copyInto(ojb);  //将集合中的所有元素复制到指定数组(ojb)中
for (Object info:ojb
     ) {
    System.out.println(info);
}

控制台:

Java集合框架主要接口及实现类详解_第4张图片

特点如下:

  • Vector是一个可以自动增长和缩小的动态数组,它能够存储任意数据类型的对象。

  • Vector是单线程,所以线程是安全的,在多线程环境下,可以通过synchronized关键字来保证Vector中的操作是原子性的。

  • Vector实现了List接口,因此它可以使用List中定义的方法,如:add()、remove()、get()等。

  • Vector中的元素可以通过索引来访问和修改,索引的范围从0到size()-1。

  • Vector中的元素可以重复,也可以为null值。

  • Vector在添加或删除元素时,如果容量不足会自动增长容量,以保证元素能够全部存储。

  • Vector还提供了一些其他的方法,如:capacity()、ensureCapacity()、setSize()等。

4.HashSet类:实现了Set接口,提供了无序的集合,不允许有重复元素。

基本使用示例:

Map list = new HashMap();  //创建一个Map集合(接口),键指定为Integer类型,值指定为String类型

//在集合中新增三个键值对
list.put(1, "张三");
list.put(2, "李四");
list.put(3, "王五");

//获取一个键的值
System.out.println(list.get(1));

Set set = list.keySet();  //获取所有的键并存储到集合(Set)中
for (Object info:set
     ) {
    System.out.println("键:" + info + "\t\t值:" + list.get(info));
}

控制台:

Java集合框架主要接口及实现类详解_第5张图片

特点如下:

  • HashSet实现了Set接口,因此它不能包含重复的元素;HashSet也是一个无序的集合,并不能保证元素的顺序。

  • HashSet使用哈希表来存储元素,因此它可以快速地进行添加、删除、查找等操作。

  • HashSet不是线程安全的,如果多个线程同时操作同一个HashSet实例,可能会导致意想不到的结果。

  • HashSet可以包含null元素,但只能包含一个null元素。

5.TreeMap类:实现了Map接口,提供了一种基于红黑树的映射,可以通过键来访问值,键是有序的。

基本使用示例:

TreeMap map = new TreeMap<>(Comparator.reverseOrder());
map.put(3, "val");
map.put(2, "val");
map.put(1, "val");
map.put(5, "val");
map.put(4, "val");
System.out.println(map);

控制台:

 

特点如下:

  • TreeMap是一个有序的集合,它根据键的自然顺序进行排序,或按照构造函数中提供的Comparator进行排序。

  • TreeMap中不允许存储重复的键。如果试图添加已经存在的键,它将会覆盖之前的值。

  • TreeMap实现了SortedMap接口,因此它可以使用SortedMap中定义的方法,如:firstKey()、lastKey()、subMap()等。

  • TreeMap使用红黑树来存储元素,因此它可以快速地进行添加、删除、查找等操作,时间复杂度为O(log n)。

  • TreeMap不是线程安全的,如果多个线程同时操作同一个TreeMap实例,可能会导致意想不到的结果。

  • TreeMap可以包含null键,但不可以包含null值。

在Java集合框架中还包括了一些算法,如排序算法和查找算法。

Java集合框架提供了非常强大的功能,可以方便地进行各种集合操作,大大提高了Java程序的开发效率。

你可能感兴趣的:(java,开发语言)