Collections:是针对集合进行操作的工具类,都是静态方法。
Collection和Collections的区别?
Collection:是单列集合的顶层接口,有子接口List和Set。
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):随机置换 也就是打乱集合中元素顺序
Collections 中有一个方法可以一次加入多个元素
public static boolean addAll(Collection c,T... elements)
该方法使用到了可变参数,即定义时并不知道要传入多少个实际参数。
此时定义成...的方式,此时可以在调用该方法时,一次传入多个参数。
传入的多个数将被自动组织成数组,我们只要操作生成的数组即可。
注:可变参数只能放在最后定义。可变参数方法本质是数组,所以不可以与数组类型参数重载。
//创建对象 Collection<String> c = new ArrayList<String>(); //向 c 集合中添加 N 个元素 Collections.addAll(c, "Jack","Rose","lucy"); System.out.println(c); System.out.println("------------------"); int sum = add(10,20,30,40); System.out.println(sum); } //用...定义可变参数,a 表示了所有传进来的参数,a 就是一个数组名称,存储了所有的参数 //求任意个数的和 public static int add(int... a) { //用来记录所有数的和 int sum = 0; //遍历可变参数 a 代表的数组 for(int i=0; i<a.length; i++) { int j = a[i]; System.out.println(j); //每次遇到一个数,就将该数累加到和中 sum += j; } //返回和 return sum; }
public static void main(String[] args) { // 准备集合及元素 List<Integer> list = new ArrayList<Integer>(); list.add(2); list.add(7); list.add(6); list.add(10); list.add(9); System.out.println(list.get(0)); // 打乱集合顺序 Collections.shuffle(list); // 打印集合 System.out.println(list); 将集合排好顺序(Integer 数字的自然顺序是从小到大排列) Collections.sort(list); System.out.println(list); //验证二分法查找元素必须有序 //在一个集合当中,查找一个指定元素的索引是多少,如果不存在该元素,就返回负数索引 int binarySearch2 = Collections.binarySearch(list, 3); System.out.println(binarySearch2); }