package com.shengxue.manager.service.test;
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator;
/**
- Collections工具类常用的方法:1、排序 2、查找替换 3、同步控制(不推荐,需要线程安全的集合类型时请考虑使用JUC包下的并发集合) */
public class CollectionsTestDemo {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(-5);
list1.add(-1);
list1.add(1);
list1.add(3);
list1.add(5);
list1.add(7);
list1.add(-5);
list1.add(9);
list1.add(1);
System.out.println("原始数组list1:"+list1);
//反转reverse
Collections.reverse(list1);
System.out.println("反转数组list1:"+list1);
/**
* void rotate(List list, int distance)//旋转。
* 当distance为正数时,将list后distance个元素整体移到前面。
* 当distance为负数时,将 list的前distance个元素整体移到后面。
*/
Collections.rotate(list1,2);
System.out.println("旋转数组list1:"+list1);
//按自然排序
Collections.sort(list1);
System.out.println("自然排序:"+list1);
//随机排序
Collections.shuffle(list1);
System.out.println("随机排序:"+list1);
//自定义排序
Collections.sort(list1, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
System.out.println("自定义排序:"+list1);
//交换两个索引位置的元素
Collections.swap(list1,2,5);
System.out.println("交换2、5两个索引后:"+list1);
/**
* int binarySearch(List list, Object key)//对List进行二分查找,返回索引,注意List必须是有序的,key为要查找的元素
* int max(Collection coll)//根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)
* int max(Collection coll, Comparator c)//根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)
* void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。
* int frequency(Collection c, Object o)//统计元素出现次数
* int indexOfSubList(List list, List target)//统计target在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target).
* boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素
*/
ArrayList<Integer> list2 = new ArrayList<Integer>();
list2.add(-1);
list2.add(1);
list2.add(3);
System.out.println("原始数组list2:"+list2);
Collections.sort(list1);
int i = Collections.binarySearch(list1, 7);
System.out.println("二分查找7的索引:"+i);
Integer max = Collections.max(list1);
Integer min = Collections.min(list1);
System.out.println("最大值:"+max+" 最小值:"+min);
int frequency = Collections.frequency(list1, 5);
System.out.println("5出现的次数:"+frequency);
Collections.replaceAll(list2,1,5);
System.out.println(list2);
int i1 = Collections.indexOfSubList(list1, list2);
System.out.println(i1);
Collections.fill(list2,1);
System.out.println(list2);
/**
* emptyXxx(): 返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。
* singletonXxx(): 返回一个只包含指定对象(只有一个或一个元素)的不可变的集合对象,此处的集合可以是:List,Set,Map。
* unmodifiableXxx(): 返回指定集合对象的不可变视图,此处的集合可以是:List,Set,Map。
* 上面三类方法的参数是原有的集合对象,返回值是该集合的”只读“版本。
*/
}
}