java.utils.Collections
是集合的工具类,用来对集合进行操作。
public static <T> boolean addAll(Collection<T> c,T…elements)
//将所有指定元素添加到指定 collection 中。
public static void shuffle(List<?> list)
//打乱集合内元素的顺序
public static <T> void sort(List<T> list)
//将集合中的元素按照默认规则(升序)排序。
使用前提:
这个集合是自定义的集合,所以这个集合里面对象的类要实现Comparable<E>接口
,并重写接口中的方法定义排序规则。
public int compareTo(E e){}
重写Comparable<E>接口
中的compareTo(E e)
方法的规则:
return 自己(this)-参数(升序)
return 参数-自己(降序)
public static <T> void sort (List<T> list,Comparator<? super T>)
//据指定比较器产生的顺序对指定列表进行排序。
Comparator
和Comparable
的区别:
Comparable
:
自己(this
)和别人(参数)比较,自己需要实现Comparable<E>
接口,重写接口内的compareTo(E e)
方法。
Comparator
:相当于找了一个第三方的裁判,比较两个对象的大小。
java.util.Comparator<T>
(重写)接口内的方法:compare(T 01,T 02)
,一般是使用匿名内部类。
排序规则:01-02(升序)
public class ComparatorDemo {
public static void main(String[] args) {
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("迪丽热巴", 28));
list.add(new Person("古力娜扎", 18));
list.add(new Person("b玛玛哈哈", 17));
list.add(new Person("a叽叽喳喳", 17));
System.out.println(list);
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person one, Person two) {
int result = one.getAge() - two.getAge();
if (result == 0) {
result = one.getName().charAt(0) - two.getName().charAt(0);
}
return result;
}
});//匿名内部类使用,这个;不能丢。
System.out.println(list);
}
}