点击查看:java集合(List、Set、Map)博客目录
8.1 、Collections 常用功能
数组有Arrays,集合有Collections…
- java.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:
- public static boolean addAll(Collection c , T … element):往集合中添加一些元素。
- public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
- public static void sort(List list): 将集合中元素按照默认规则排序。
- public static void sort(List list,Comparator<? super T> ):将集合中的元素按照指定规则排序。
代码演示:
import java.util.*;
public class CollectionsDemo{
public static void main(String[] args){
ArrayList<String> list = new ArrayList<String>();
/* list.add("a");
list.add("b");
list.add("c");
list.add("d"); */
// 一次添加多个元素
Collections.addAll(list,"b","a","c","d");
System;out.println(list);
// 打乱集合中元素的顺序
Collections.shuffle(list);
System.out.println(list);
// 将集合中元素 默认按升序排序
Collections.sort(list);
System.out.println(list);
}
}
- public static void sort(List list): 将集合中元素按照默认规则排序。
import java.util.*;
/* Sort(List<T> list) 使用前提
* 被排序的集合里面存储的元素,必须实现Comparable,
* 重写接口中的方法ComparaTo
*
* Comparable 接口排序规则:
* 自己(this)-参数 ; 升序,反之降序。
*/
class Person implement Comparable{
private String name;
private int age;
public Person(){
}
public Person(String name , int age){
this.name = name;
this.age = age;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
@Override // 重写排序规则
public int comepareTo(Person o){
//return 0; // 认为元素都是相同的
// 自定义比较的规则,比较两个人的年龄(this,参数person)
//return this.getAge() - o.getAge(); // 年龄升序排序
return o.getAge() - this.getAge(); // 年龄降序排序
}
}
public class CollectionsDemo{
public static void main(String[] args){
ArrayList<Person> list = new ArrayList<Person>();
list.add(new Person("张三",18));
list.add(new Person("李四",20));
list.add(new Person("王五",15));
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
}
- public static void sort(List list,Comparator<? super T> ):将集合中的元素按照指定规则排序。
import java.util.*;
/* Comparator和Comparable的区别:
* Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则。
* ComaraTo: 相当于找一个第三方的裁判,比较两个
*/
class Student{
private String name;
private int age;
public Student(){
}
public Student(String name , int age){
this.name = name;
this.age = age;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
@Override
public String toString(){
return "Student{ "+"name = '"+name+'\''+",age = " + age+'}';
}
}
public class DemoSort{
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Student> list02 = new ArrayList<Student>();
list.add(1);
list.add(3);
list.add(2);
System.out.println(list);
// 传一个集合,传一个比较器
Collections.sort(list,new Comparator<Integer>(){
@Override // 重写比较的规则
public int compare(Integer o1,Integer o2){
return o1 - o2 ; // 升序,反之降序(o2-o1)
}
});
list02.add(new Student("张三",18));
list02.add(new Student("李四",16));
list02.add(new Student("王五",20));
list02.add(new Student("赵六",18));
list02.add(new Student("田七",17));
Collections.sort(list02,new Comparator<Student>(){
@Override // 重写比较的规则
public int compare(Student o1,Student o2){
// 按照年龄升序排序
int result = o1.getAge()-o2.getAge();
// 如果两个人年龄相同,再用姓名第一个字比较
if(result == 0){
result = o1.getName().charAt(0)-o2.getName().charAt(0);
}
return result;
}
});
System.out.println(list);
}
}