Collections是一个工具类
这个类是一个静态类,也就是意味着可以直接通过类名 . 方法调用 - 不需要实例化
这个类中的方法都是静态方法 - 基本上都是为集合中服务的
public static void shuffle(List<?> list):打乱元素的顺序 - 其实打乱的是集合中元素的下标
有顺序:每一个元素都是按照添加的时候生成的下标进行排序
排序后:不管是第几个放的,只要是到了集合中,就会按照一定的顺序重新排列
打乱顺序:
package Test19_Demo.Demo05;/*
@create 2020--12--09--11:11
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
//创建有序的集合对象 - 向上造型
List<Integer> list = new ArrayList<>();
//添加数据
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//打乱前的顺序
System.out.println(list);//[2, 3, 4, 5]
//打乱
Collections.shuffle(list);
//打乱后的排序
System.out.println(list);
}
}
当对象类型进行排序的时候会报错,因为定义数据类型的对象没有比较顺序,不知道什么是大什么是小
所以不能进行排序
没有比较规则
二分查找法:在一个集合中,如果找得到就返回一个值,如果找不到就返回一个负数索引
不管这个指定元素的下表是多少
二分查找法必须要求集合中的元素排列好顺序。
binarySearch(查找的集合,在集合中查找的内容);
package Test19_Demo.Demo05;/*
@create 2020--12--09--11:11
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CollectionsDemo3 {
public static void main(String[] args) {
//创建有序的集合对象 - 向上造型
List<Integer> list1 = new ArrayList<>();
//添加数据
list1.add(2);
list1.add(3);
list1.add(7);
list1.add(4);
list1.add(9);
list1.add(6);
list1.add(5);
System.out.println(list1);
/*//直接进行二分查找 - 没有排序
int i = Collections.binarySearch(list1, 9);
System.out.println(i);//-8*/
//先排序,之后再进行二分查找
Collections.sort(list1);
System.out.println(list1);
int i1 = Collections.binarySearch(list1, 9);
System.out.println(i1);//6
}
}