一、 Collections算法类
它是一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
格式:Collections.方法名()
就如数组的操作类Arrays类一样,Collections类是一个操作集合的类,
注意:只能操作Collection接口下的集合(Map集合不能使用该类)
二、Collection与Collections区别
1、Collection是集合的顶层接口,本身是一个Interface接口,里面包含了一些集合的基本操作,需要实例化Collection下的list、set、map、vector接口才能调用里面的方法。
2、Collections是集合框架的工具类,里面包含一些对集合的排序,搜索以及序列化的操作,内部的方法都是静态的,没有构造方法,不能实例化,要调用内部方法直接用类名调用,并且Collections类服务于Collection框架。
三、Collections常用的方法
1、addAll方法;可以对所有Collection集合使用 2、sort(),reverse(),replaceAll(),binarySearch(),shuffle(),swap()等方法,只能对List及其子类使用,Set类型不能用
四、使用Collections方法
public class TestCollections {
public static void main(String[] args) {
//固定大小集合
List<String> names = Arrays.asList("peter", "boy", "collection");
//泛型集合
List<String> list = new ArrayList<>(names);
//添加
get_addAll(list);
//反转
get_reverse(list);
//排序
get_sort(list);
//随机排列
get_shuffle(list);
//替换数据
get_replaceAll(list);
//有序查找
get_binarySearch(list);
//交换位置
get_swap(list);
//查找最大值
get_max(list);
//填充数据
get_fill(list);
//拷贝数据
get_copy(list);
}
/**
* 1.addAll(集合,要添加的元素) 将所有指定元素添加到指定集合中
*
* @param list
*/
private static void get_addAll(List<String> list) {
Collections.addAll(list, "mike", "zhang", "boy");
System.out.println("添加数据:" + list);
}
/**
* 2.reverse方法 反转指定列表中的元素,跟sort方法一样,只对List及其子类使用
*
* @param list
*/
private static void get_reverse(List<String> list) {
Collections.reverse(list);
System.out.println("倒序数据: " + list);
}
/**
* 3.sort(List 要操作的集合) 根据元素的自然顺序对指定列表按升序进行排序
*
* @param list
*/
private static void get_sort(List<String> list) {
Collections.sort(list);
System.out.println("升序排序: " + list);
}
/**
* 4. shuffle()方法,对参数List中的元素进行随机排列 只能对List及其子类使用
*
* @param list
*/
private static void get_shuffle(List<String> list) {
Collections.shuffle(list);
System.out.println("随机排序: " + list);
}
/**
* 5.replaceAll(要操作的集合,旧值,新值)方法 将列表中的旧值替换为新值,
* 只对List及其子类可用
*
* @param list
*/
private static void get_replaceAll(List<String> list) {
Collections.replaceAll(list, "boy", "BOY");
System.out.println("替换数据: " + list);
}
/**
* 6.binarySearch()方法,在有序的List中查找指定的元素。注意:有序
*
* @param list
*/
private static void get_binarySearch(List<String> list) {
Collections.sort(list);
// 如果找不到元素或者元素无序的话,返回负值
// int index= Collections.binarySearch(list, "mike");
int index = Collections.binarySearch(list, "mike2");
System.out.println("有序查找: " + index);
}
/**
* 7.swap(要操作的集合,int i,int j)方法 在List指定的列表中交换i和j两位置处的元素
*
* @param list
*/
private static void get_swap(List<String> list) {
System.out.println("原列表: " + list);
Collections.swap(list, 2, 4);
System.out.println("交换位置: " + list);
}
/**
* 8 max/min(List 要操作的集合) 根据元素的自然顺序对指定列表按升序进行排序
*
* @param list
*/
private static void get_max(List<String> list) {
Object max = Collections.max(list);
Object min = Collections.min(list);
System.out.println("查找最大: " + max);
System.out.println("查找最小: " + min);
}
/**
* 9 fill(List ,obj) 使用指定的对象填充指定列表的所有元素
*
* @param list
*/
private static void get_fill(List<String> list) {
Collections.fill(list, "ok");
System.out.println("填充数据: " + list);
}
/**
* 10 copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
* 注意:目标列表的长度>=源列表的长度
*
* @param list
*/
private static void get_copy(List<String> list) {
//目标列表
List<String> desc = Arrays.asList(new String[list.size()]);
// System.out.println(desc.size());
//拷贝数据
Collections.copy(desc, list);
System.out.println("拷贝数据: " + desc);
}
}