集合排序
最近在写代码的时候,突然要对集合进行排序,但是一时之间却想不起来了。于是又回去翻看了基础然后整理了一下
- 可以自己写一个排序方法去排序,当然我感觉这么写的人很少啊(我是不会这么写的 哈哈)
- 可以使用Collections工具类中的sort方法,但是这个方法如果我们ArrayList集合中存的是自己创建的对象的话,我们要实现一个Comparable接口,然后覆写其中的compareTo方法
先来看看最简单的集合中存Integer
public class ArrayListTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(6);
list.add(8);
list.add(4);
list.add(3);
list.add(10);
list.add(5);
System.out.println("----排序之前----");
System.out.println(list);
Collections.sort(list);
System.out.println("----排序之后----");
System.out.println(list);
}
}
结果如下
然后再来看看集合中存对象的
先来看看Worker对象
class Worker implements Comparable<Worker> {
private String name;
private int age;
private int salary;
public Worker(String name, int age, int salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "Worker{" +
"name='" + name + '\'' +
", age=" + age +
", salary=" + salary +
'}';
}
//getter方法
//setter方法
/** 1. 先按照年龄,年龄一样,在按照薪资排序 **/
@Override
public int compareTo(Worker o) {
if(o.getAge() > this.age){
return 1;
}else if(o.getAge() < this.age){
return -1;
}else{
if (o.getSalary() > this.salary){
return 1;
}else if(o.getSalary() < this.salary){
return -1;
}else {
return 0;
}
}
}
}
再来看测试代码
public class ArrayListTest {
public static void main(String[] args) {
List<Worker> list = new ArrayList<>();
list.add(new Worker("张三",23,5000));
list.add(new Worker("张四",24,6000));
list.add(new Worker("张五",25,3000));
list.add(new Worker("张八",25,6000));
list.add(new Worker("张六",21,4000));
list.add(new Worker("张七",21,8000));
System.out.println("----排序之前----");
list.forEach(System.out::println);
Collections.sort(list);
System.out.println("----排序之后----");
list.forEach(System.out::println);
}
}
结果如下
3. 还可以利用stream().sorted()来进行排序
list = list.stream().sorted().collect(Collectors.toList());
如有不足的地方还望补充