java.utils.Collections 是集合工具类,用来对集合进行操作。
部分方法如下:
- public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
- public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
代码举例:
package demo03; import java.util.ArrayList; import java.util.Collections; public class CollectionsTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); // 一次性往集合中添加多个元素 Collections.addAll(list, "1", "2", "3", "4", "5", "6", "7"); System.out.println(list); // 打乱集合中元素的顺序 Collections.shuffle(list); System.out.println(list); } }
执行结果:
- public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
默认规则:就是升序
注意:
- 被排序的集合里存储的元素,必须实现comparable接口,重写其中的方法compareTo定义排序的规则.
代码举例:
package demo02; import java.util.Objects; // 定义测试用对象.要对什么类型排序,泛型就是什么类型 public class Student implements Comparable<Student> { private String name; private int age; // 全参数构造 public Student(String name, int age) { this.name = name; this.age = age; } // 无参数构造 public Student() { } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(Student o) { // 按照年龄 this 在前面 就是按照升序,反之 return this.getAge() - o.getAge(); } }
测试代码
package demo03; import demo02.Student; import java.util.ArrayList; import java.util.Collections; public class CollectionsTest { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); // 一次性往集合中添加多个元素 Collections.addAll(list, new Student("张三", 18), new Student("张三", 17), new Student("张三", 15)); Collections.sort(list); System.out.println(list); } }
执行结果:
- public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。
简述Comparable和Comparator两个接口的区别。
Comparable:强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法
被称为它的自然比较方法。只能在类中实现compareTo()一次,不能经常修改类的代码实现自己想要的排序。实现
此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序,对象可以用作有序映射中
的键或有序集合中的元素,无需指定比较器。
Comparator强行对某个对象进行整体排序。可以将Comparator 传递给sort方法(如Collections.sort或
Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用Comparator来控制某些数据结构(如有序set或
有序映射)的顺序,或者为那些没有自然顺序的对象collection提供排序