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


一、集合工具类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);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值