常用方法
java.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:
- public static boolean addAll(Collection c, T… elements) :往集合中添加一些元素。
- public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
public class CollectionsDemo {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
//原来写法
//list.add(12);
//list.add(14);
//list.add(15);
//采用工具类 完成 往集合中添加元素
Collections.addAll(list, 5, 222, 1,2);
//打乱集合顺序
Collections.shuffle(list);//每次都不一样
//排序方法
Collections.sort(list);
System.out.println(list);
}
}
- public static void sort(List list) :将集合中元素按照默认规则排序。(升序)
1)使用前提:被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则
2)Comparable接口的排序规则:自己(this) - 参数:升序
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name,int age){
this.age=age;
this.name=name;
}
@Override
public int compareTo(Person o) {
return this.age - o.age;//升序
}
public static void main(String[] args) {
List<Person> list=new ArrayList<>();
list.add(new Person("ff",20));
list.add(new Person("gg",23));
list.add(new Person("ff",22));
//对集合排序
Collections.sort(list);//按照年龄升序排序
}
}
- public static void sort(List list,Comparator<? super T> ) :将集合中元素按照指定规则排 序。
- Comparator与Comparable的区别:
1)Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法;
2)Comparator:相当于找一个第三方裁判,比较两个; - Comparator排序规则
o1-o2:升序
public static void main(String[] args) {
List<Person> list=new ArrayList<>();
list.add(new Person("ff",20));
list.add(new Person("gg",23));
list.add(new Person("ff",22));
//对集合排序
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {//按照年龄升序排序
return o1.age - o2.age;
}
});
//扩展排序
Collections.sort(list, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {//年龄相等,按姓名第一个字母排序
int result = o1.age - o2.age;
//年龄相同,按姓名第一个字母排序
if(result == 0){
result = o1.name.charAt(0) - o2.name.charAt(0);//升序
}
return result;
}
});
System.out.println(list.toString());
}