🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇
⭐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
的区别非常重要。通过对这些工具类和数据结构的了解,能够帮助我们更高效地操作集合和数组,并在日常编程中更加得心应手,以后就不用傻傻分不清咯,感谢阅览。