🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇
⭐collections & collect AND array & arrays ⭐
🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇
目录
前言
一、Collection 和 Collections 的区别
1. Collection:接口
常用的方法:
例子:
2. Collections:工具类
常用的方法:
例子:
小结:
二、Array 和 Arrays 的区别
1. array:基本数据结构
特点:
例子:
常用操作:
2. Arrays:工具类
常用的方法:
例子:
小结:
三、collect 方法与流操作的关系
1. collect 方法:流操作的终结方法
常用的 Collector:
例子:
小结:
总结
前言
最近在刷算法的时候经常碰见这四个词,经常傻傻分不清,类的方法也记不清怎么使用,但是这在算法中会用到,特别是 Collections ,arrays 类中的方法,每次用这两个的时候想起另外两个就心生疑惑,甚至有的时候记不清用哪个,于是我这里到处搜罗,总结整理写下了这篇博客。
在 Java 中,
Collections和collect,以及array和arrays这四个名词看似相似,但它们分别代表了不同的概念和用途。理解这些概念以及它们之间的差异,可以让我们更高效地处理数据结构和数理逻辑。本文将深入探讨它们的区别和常用方法,帮助大家更好地理解这些工具类与数据结构。
一、Collection 和 Collections 的区别
1. Collection:接口
Collection是 Java 集合框架中的一个顶层接口,位于java.util包中。它定义了集合类的基本操作,但并不直接提供集合的实现。Collection接口是所有集合类的超类,包括List、Set、Queue等接口。因此,Collection作为接口提供了集合的一些通用方法,但不能实例化对象。它的作用是规定所有实现类必须提供的方法。
常用的方法:
add(E e):向集合中添加元素。remove(Object o):从集合中移除元素。clear():清空集合中的所有元素。contains(Object o):判断集合是否包含某个元素。size():返回集合中元素的个数。isEmpty():判断集合是否为空。
例子:
Collection<String> collection = new ArrayList<>();
collection.add("Apple");
collection.add("Banana");
System.out.println(collection.contains("Apple")); // 输出: true
System.out.println(collection.size()); // 输出: 2
2. Collections:工具类
Collections是 Java 提供的一个静态工具类,位于java.util包中。它并不是集合类的父类,而是专门为操作和处理集合类提供各种静态方法。Collections类中的方法包括排序、查找、反转、线程安全等操作,可以对List、Set、Map等各种集合进行高效的处理。
常用的方法:
sort(List<T> list):对List进行排序。reverse(List<T> list):反转List中的元素顺序。shuffle(List<T> list):打乱List中元素的顺序。max(Collection<T> coll):返回集合中的最大元素。min(Collection<T> coll):返回集合中的最小元素。singletonList(T o):返回一个只有一个元素的List。synchronizedList(List<T> list):返回一个线程安全的List。
例子:
List<Integer> list = Arrays.asList(3, 1, 2);
Collections.sort(list);
System.out.println(list); // 输出: [1, 2, 3]
小结:
Collection是一个接口,定义了集合类的基本行为,如添加、删除、查找等方法,所有集合类都实现了它。Collections是一个工具类,提供了对集合的各种操作,如排序、查找、线程安全等功能。
二、Array 和 Arrays 的区别
1. array:基本数据结构
array(数组)是 Java 中最基本的数据结构之一,它用于存储固定大小的、类型相同的元素。数组在内存中是连续分配的,因此它可以高效地进行元素的访问。然而,数组的大小在创建时就固定了,无法动态调整。
特点:
- 数组中的元素必须是相同类型的。
- 数组大小固定,一旦创建就不能改变。
- 可以是基本数据类型或对象的数组。
- 数组的索引从
0开始。
例子:
int[] arr = new int[5]; // 创建一个长度为 5 的 int 类型数组
arr[0] = 1; // 为数组的第一个元素赋值
System.out.println(arr.length); // 输出数组的长度: 5
常用操作:
arr[index]:访问数组元素。arr.length:获取数组的长度。arr[index] = value:修改数组中的元素。
2. Arrays:工具类
Arrays是 Java 提供的一个工具类,位于java.util包中,专门用于操作数组。它提供了一些静态方法来对数组进行常见的操作,如排序、查找、复制、比较等。
常用的方法:
sort(int[] array):对数组进行排序。binarySearch(int[] array, int key):在已排序的数组中查找指定元素。copyOf(T[] original, int newLength):复制一个数组并返回新的数组。equals(int[] array1, int[] array2):判断两个数组是否相等。toString(int[] array):将数组转换为字符串。
例子:
int[] arr = {5, 2, 8, 3};
Arrays.sort(arr); // 排序数组
System.out.println(Arrays.toString(arr)); // 输出: [2, 3, 5, 8]
小结:
array是一种数据结构,用于存储固定大小且类型相同的元素,它是 Java 中最基本的存储方式。Arrays是一个工具类,提供了许多静态方法来操作数组,简化了数组的处理过程。
三、collect 方法与流操作的关系
1. collect 方法:流操作的终结方法
在 Java 8 引入的 Stream API 中,
collect方法是一个终结操作,用于将流中的元素转换成其他形式,通常是集合类型,如List、Set或Map。collect方法接受一个Collector实例作为参数,常常与Collectors工具类配合使用。
常用的 Collector:
Collectors.toList():将流的元素收集到List中。Collectors.toSet():将流的元素收集到Set中。Collectors.toMap():将流的元素收集到Map中。Collectors.joining():将流中的元素连接成一个字符串。
例子:
List<Integer> list = Stream.of(1, 2, 3, 4).filter(n -> n % 2 == 0).collect(Collectors.toList());
System.out.println(list); // 输出: [2, 4]
小结:
collect是 Java 8 Stream API 中的一个方法,它用于将流的元素转换成集合等数据结构。常常与Collectors配合使用,能够高效地收集流中的元素。
总结
| 名称 | 类型 | 用途/功能 | 常用方法 |
|---|---|---|---|
Collection | 接口 | 定义了所有集合类的基本操作,如添加、删除、查找等。 | add(), remove(), contains(), size() 等 |
Collections | 工具类 | 提供对集合的各种操作,如排序、查找、线程安全等。 | sort(), reverse(), max(), shuffle() 等 |
array | 数据结构 | 用于存储固定大小、类型相同的元素。 | 访问和修改数组元素,使用 length 获取数组长度 |
Arrays | 工具类 | 提供对数组的操作,如排序、查找、复制等。 | sort(), binarySearch(), copyOf(), toString() 等 |
collect | 方法 | 用于流操作,将流中的元素收集为集合。 | Collectors.toList(), Collectors.toSet(), joining() |
在 Java 编程中,理解 Collection 和 Collections,以及 array 和 Arrays 的区别非常重要。通过对这些工具类和数据结构的了解,能够帮助我们更高效地操作集合和数组,并在日常编程中更加得心应手,以后就不用傻傻分不清咯,感谢阅览。
