三、集合框架工具类Arrays和Collections
1.Arrays的常用的方法
常用的方法
1.排序方法
Arrays.sort()方法可以对数组进行排序,该方法有两种重载形式,一种是按升序排序,一种是按照指定Comparator排序。
int[] arr = {5,3,7,1,9}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //[1, 3, 5, 7, 9]
2.查找方法
Arrays中提供了两个查找方法,一个是线性查找Arrays.binarySearch(),一个是二分查找Arrays.binarySearch()。
int[] arr = {1, 2, 3, 4, 5}; int index = Arrays.binarySearch(arr, 3); System.out.println(index); // 2
3.比较方法
Arrays类提供了equals和deepEquals两个用于比较数组的方法,其中deepEquals方法可以比较多维数组。
int[] arr1 = {1, 2, 3}; int[] arr2 = {1, 2, 3}; boolean result1 = Arrays.equals(arr1, arr2); // true int[][] arr3 = {{1, 2, 3}, {4, 5, 6}}; int[][] arr4 = {{1, 2, 3}, {4, 5, 6}}; boolean result2 = Arrays.deepEquals(arr3, arr4); // true
4.复制方法
数组复制方法clone和copyOf
int[] arr1 = {1, 2, 3}; int[] arr2 = arr1.clone(); int[] arr3 = Arrays.copyOf(arr1, arr1.length);
5.填充方法
用Arrays.fill()方法可以为数组赋值。
int[] arr = new int[5]; Arrays.fill(arr, 5); System.out.println(Arrays.toString(arr)); //[5, 5, 5, 5, 5]
2.Collections的常用的方法
常见方法
1.排序方法
sort(List<T> list)该方法用于对指定的List进行排序,使用默认的升序排序。
List<String> list = new ArrayList<>(); list.add("c"); list.add("a"); list.add("b"); Collections.sort(list); // 对list进行升序排序 System.out.println(list); // 输出 [a, b, c]
2.反转输出
reverse(List<T> list)该方法用于将指定的列表进行反转。
List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); Collections.reverse(list); // 反转list System.out.println(list); // 输出 [c, b, a]
3.随机排序
shuffle(List<T> list)该方法用于将指定的列表进行随机排序。
List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); Collections.shuffle(list); // 随机排序 System.out.println(list); // 输出 [c, a, b]
4.根据有序列表查询指定元素
binarySearch(List<? extends Comparable<? super T>> list, T key)该方法用于在指定的有序列表中查找指定的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); int index = Collections.binarySearch(list, 3); // 在有序列表中查找元素 System.out.println(index); // 输出 2
5.获取集合中最大的元素
max(Collection<? extends T> coll)该方法用于获取指定集合中最大的元素,根据元素的自然顺序来确定最大元素。集合中的元素必须实现Comparable接口才能进行比较。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); int max = Collections.max(list); // 获取列表中最大的元素 System.out.println(max); // 输出 7
6.获取集合中最小的元素
min(Collection<? extends T> coll)该方法用于获取指定集合中最小的元素,根据元素的自然顺序来确定最小元素。集合中的元素必须实现Comparable接口才能进行比较。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); int min = Collections.min(list); // 获取列表中最小的元素 System.out.println(min); // 输出 1
7.将源列表元素复制到目标列表
copy(List<? super T> dest, List<? extends T> src)该方法用于将源列表中的元素复制到目标列表中。
List<String> srcList = Arrays.asList("a", "b", "c"); List<String> destList = new ArrayList<>(Collections.nCopies(srcList.size(), "")); Collections.copy(destList, srcList); // 复制srcList中的元素到destList中 System.out.println(destList); // 输出 [a, b, c]
8.返回一个不可修改的包含n个元素的列表
nCopies(int n, T o)该方法用于返回一个不可修改的包含n个元素的列表,其中所有元素都等于指定的对象。
List<String> list = Collections.nCopies(3, "a"); // 返回不可修改的列表,其中所有元素都等于"a" System.out.println(list); // 输出 [a, a, a]
9.用指定的元素替换指定列表中的所有元素
fill(List<? super T> list, T obj)该方法用于用指定的元素替换指定列表中的所有元素。
List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); Collections.fill(list, "d"); // 使用"d"替换所有元素 System.out.println(list); // 输出 [d, d, d]
10.用于返回集合中指定元素的出现次数
frequency(Collection<?> c, Object o)该方法用于返回集合中指定元素的出现次数。
List<Integer> list = Arrays.asList(1, 2, 1, 3, 1, 4, 1, 5); int frequency = Collections.frequency(list, 1); System.out.println("1出现的次数:" + frequency);
3.Arrays和Collections的区别
1.实现方式不同
Arrays
是 Java 标准类库中的一员,它提供了一个用于操作数组的工具类,其中包含了很多用于数组处理的静态方法。
Collections
是 Java 集合框架中的一员,它是一个用于操作集合类的工具类,其中包含了很多用于集合处理的静态方法。
2.所处理的对象不同
Arrays
只能处理数组类型的数据,例如 int[]
、String[]
等。
Collections
可以处理任意类型的集合对象,例如 List
、Set
、Map
和 Queue
等。
3.内容可变性不同
Arrays
中的数组长度是固定的,一旦创建就不能再改变大小。如果需要增加或删除元素,则需要重新创建数组。
Collections
中的集合内容是可变的,可以实时增删元素,因此更加灵活。
4.初始容量设置方式不同
使用 Arrays
创建数组时,必须指定数组的长度,否则会抛出 NullPointerException
异常。
使用 Collections
创建集合时不需要指定初始容量,因为它可以根据实际需要进行动态扩展。
5.线程安全性不同
Arrays
和 Collections
都不是线程安全的类。
如果需要在多线程环境下操作集合对象,应该使用线程安全的集合类,例如 ConcurrentHashMap
、CopyOnWriteArrayList
等。
至此,这篇关于Map集合的一点略见就到这里啦,看在博主这么辛苦的份上就点个赞再走吧!!