Collections中的三个常用方法,addAll,sort,shuffle
package Day15;/*
@Author wanghongyuan
@Date 2020/12/24
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
java.utils.Collection是集合的工具类,用来对集合进行操作,部分方法如下:
-public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
-public static void shuffle(list<?> list)打乱顺序:打乱集合的顺序。
-public static <T> void sort(list<T> list):将集合中元素按照默认规则排序。
注意:
sort(list<T> list)使用前提
被排序的集合里边存储的元素,必须实现Comparable,重写接口中的compareTo定义排序的规则
Comparable接口的排序规则:
自己(this)-参数:升序
参数-自己(this): 降序
-public static <T> void sort(list<T> list,Comparator<? super T>):将集合中的元素按照指定规则排序。
Comparable 和 Comparator的区别:
Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则CompareTo方法;
Comparator:找一个第三方裁判,比较两个。
*/
public class Demo01Collections {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
//往集合中添加元素
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
System.out.println(list);
// -public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
// 静态方法可以直接调用
Collections.addAll(list,"2","4","5","6","123");
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
// 将集合中的元素按照默认规则排序,只能传list集合,也是静态方法可以直接通过方法调用。
Collections.sort(list);
System.out.println(list);//默认是升序的
ArrayList<String> arr = new ArrayList<>();
System.out.println("===============");
Collections.addAll(arr,"123","sad","中国","GOOD");
System.out.println(arr);
// 字符串的升序
Collections.sort(arr);
System.out.println(arr);
// 创建一个集合泛型为自定义的类->Person
ArrayList<Person> list01 = new ArrayList<>();
// 匿名对象创建周星驰等
list01.add(new Person("周星驰",23));
list01.add(new Person("刘德华",22));
list01.add(new Person("a甄子丹",24));
list01.add(new Person("c成龙",24));
list01.add(new Person("b成龙",24));
System.out.println(list01);
Collections.sort(list01);
System.out.println(list01);
// Collections.sort(list01, new Comparator<Person>() {
// //重写比较的规则
// @Override
// public int compare(Person o1, Person o2) {
// // 按照年龄升序排序
// return o1.getAge() - o2.getAge();
return o1.getName()-o2.getName();
// }
// });
Collections.sort(list01, new Comparator<Person>() {
//重写比较的规则
@Override
public int compare(Person o1, Person o2) {
// 按照年龄升序排序
int result = o1.getAge() - o2.getAge();
// 如果两个人的年龄相同,再使用姓名的第一个字比较
if (result==0){
result = o1.getName().charAt(0) - o2.getName().charAt(0);
}
return result;
// return o1.getName()-o2.getName();
}
});
System.out.println(list01);
}
}