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