【Java基础】——集合工具类Collections和数组工具类Arrays

时间:2023-02-24 23:02:52

一、集合工具类Collections

1、什么是Collections?

Collections是对集合框架的一个工具类。它里边的方法都是静态的,不需要创建对象。并未封装特有数据。Collections工具类中大部分方法是用于对List集合进行操作的,如比较,二分查找,随机排序等

2、常见操作

查找

  • T max(Collection<? extends T> coll);//根据集合的自然顺序,获取coll集合中的最大元素
  • T max(Collection<? extends T> coll,Comparator<? super T> comp);//根据指定比较器comp的顺序,获取coll集合中的最大元素
  • int binarySearch(Lsit<? extends Comparable<? super T>> list,Tkey);//二分法搜索list集合中的指定对象

替换

  • void fill(List<? super T> list, T obj);//list集合中的全部元素替换成指定对象obj
  • boolean replaceAll(List<T> lsit,T oldVal,T newVal);//newVal替换集合中的oldVal
  • void  swap(Listlist,int i,int j);/在指定列表的指定位置处交换元素

排序

  • void shuffle(List<?> list);//使用默认随机源对list集合中的元素进行随机排序
  • void sort(Lsit<T> list);//根据自然顺序对list集合中的元素进行排序
  • voidsort(List<T> lsit,Comparator<? super T> c);//根据指定比较器c的排序方式对list集合进行排序

反转

  • reverse(List<?> list);//反转list集合中元素的顺序
  • Comparator reverseOrder();//返回一个比较器,强行逆转了实现Comparable接口的对象的自然顺序
  • ComparatorreverseOrder(Comparator<T> cmp);//返回一个比较器,强行逆转了指定比较器的顺序

同步的集合

  • List<T>synchronizedList(List<T> list);//返回支持的同步(线程安全的)List集合
  • Map<K,V>synchronizedList(Map<K,V> m);//返回支持的同步(线程安全的)Map集合

3、Collection和Collections的区别?
  • Collection:是单列集合的顶层接口,有子接口List和Set。
  • Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
Collections常用功能实例如下:
package cn.itcast_01;

import java.util.Collections;
import java.util.List;
import java.util.ArrayList;

/*
* Collections:是针对集合进行操作的工具类,都是静态方法。
* public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。
* public static <T> int binarySearch(List<?> list,T key):二分查找
* public static <T> T max(Collection<?> coll):最大值
* public static void reverse(List<?> list):反转
* public static void shuffle(List<?> list):随机置换
*/
public class CollectionsDemo {
public static void main(String[] args) {
// 创建集合对象
List<Integer> list = new ArrayList<Integer>();

// 添加元素
list.add(30);
list.add(20);
list.add(50);
list.add(10);
list.add(40);

System.out.println("list:" + list);

// public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。
// Collections.sort(list);
// System.out.println("list:" + list);
// [10, 20, 30, 40, 50]

// public static <T> int binarySearch(List<?> list,T key):二分查找
// System.out
// .println("binarySearch:" + Collections.binarySearch(list, 30));
// System.out.println("binarySearch:"
// + Collections.binarySearch(list, 300));

// public static <T> T max(Collection<?> coll):最大值
// System.out.println("max:"+Collections.max(list));

// public static void reverse(List<?> list):反转
// Collections.reverse(list);
// System.out.println("list:" + list);

//public static void shuffle(List<?> list):随机置换
Collections.shuffle(list);
System.out.println("list:" + list);
}
}

二、数组工具类Arrays

1、Arrays概述

 Arrays是用于操作数组的工具类。里边的方法也全是静态的。不需要创建对象。

把数组变成List集合的好处:可以使用集合的思想和方法来操作数组中的元素。如:contains,get,indexOf,subList等方法。

Arrays类是针对数组进行操作的类,提供了排序,查找等功能。

2、方法介绍

由于该类方法较多,就不一一列举了。下面介绍几个重点的。

  • public static String toString(int[] a):返回数组的字符串形式
  • public static void sort(int[] a):排序
  • public static intbinarySearch(int[]a,int key)二分查找
  • asList(T... a):返回一个受指定数组支持的固定大小的list集合。

3、Arrays类常用方法演示

①基本方法演示
package cn.itcast_05;

import java.util.Arrays;

/*
* Arrays:针对数组进行操作的工具类。比如说排序和查找。
* 1:public static String toString(int[] a) 把数组转成字符串
* 2:public static void sort(int[] a) 对数组进行排序
* 3:public static int binarySearch(int[] a,int key) 二分查找
*/
public class ArraysDemo {
public static void main(String[] args) {
// 定义一个数组
int[] arr = { 24, 69, 80, 57, 13 };

// public static String toString(int[] a) 把数组转成字符串
System.out.println("排序前:" + Arrays.toString(arr));

// public static void sort(int[] a) 对数组进行排序
Arrays.sort(arr);
System.out.println("排序后:" + Arrays.toString(arr));

// [13, 24, 57, 69, 80]
// public static int binarySearch(int[] a,int key) 二分查找
System.out.println("binarySearch:" + Arrays.binarySearch(arr, 57));
System.out.println("binarySearch:" + Arrays.binarySearch(arr, 577));
}
}
②数组变集合演示
package cn.itcast_03;

import java.util.Arrays;
import java.util.List;

/*
* public static <T> List<T> asList(T... a):把数组转成集合
*
* 注意事项:
* 虽然可以把数组转成集合,但是集合的长度不能改变。
*/
public class ArraysDemo {
public static void main(String[] args) {
// 定义一个数组
// String[] strArray = { "hello", "world", "java" };
// List<String> list = Arrays.asList(strArray);

List<String> list = Arrays.asList("hello", "world", "java");
// UnsupportedOperationException
// list.add("javaee");
// UnsupportedOperationException
// list.remove(1);
list.set(1, "javaee");

for (String s : list) {
System.out.println(s);
}
}
}