Collections集合工具类
-
java.utils.Collections
是集合工具类,用来对集合进行操作 -
public static <T> boolean addAll(Collection<T> c,T...elements)
:往集合中添加一些元素 -
public static void shuffle(List<?> list)
:打乱顺序 -
public static <T> void sort(List<T> list)
:将集合中元素按照默认规则排序- 被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的
compareTo()方法
定义排序的规则 - 规则: this-参数(升序) 参数-this(降序)
- 被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的
-
public static <T> void sort( List<T> list,Comparator<? super T>)
:将集合中的元素按照指定规则排序。Comparable 和 Comparator的区别:
-
Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则
compareTo()方法
方法; - Comparator:找一个第三方裁判,比较两个。
-
Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则
public class Person implements Comparable<Person> {
private String name;
private int age;
@Override
public int compareTo(Person o) {
//return 0; 认为元素都是相同的
//自定义规则:按照年龄排序
return this.getAge()-o.getAge();//升序
//return o.getAge()-this.getAge();//降序
//此处可以自定义规则
}
}
public class Demo01 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
Collections.addAll(list,"a","c","e","d");
System.out.println(list);//[a, b, c, d]
Collections.shuffle(list);//打乱顺序
System.out.println(list);//[b, d, a, c] 每次都不一样
Collections.sort(list);//参数只能传List集合不能Set集合
System.out.println(list);//[a, b, c, d]
ArrayList<Person> list1=new ArrayList<>();
Collections.addAll(list1,new Person("zhangsan",19),new Person("lisi",18),new Person("wanger",21));
System.out.println(list1);
//[Person{name='zhangsan', age=19}, Person{name='lisi', age=18}, Person{name='wanger', age=21}]
Collections.sort(list1);
System.out.println(list1);
//[Person{name='lisi', age=18}, Person{name='zhangsan', age=19}, Person{name='wanger', age=21}]
Collections.sort(list1, new Comparator<Person>() {
//重写比较规则
@Override
public int compare(Person o1, Person o2) {
return o2.getAge()-o1.getAge();//降序
//此处可以自定义规则
}
});
System.out.println(list1);//[Person{name='wanger', age=21}, Person{name='zhangsan', age=19}, Person{name='lisi', age=18}]
}
}