Java-集合对象比较

2021-01-03  本文已影响0人  hello_world_cxm
package Hello1;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Test11 {
    public static void main(String[] args) {
//      String[] ss = {"cxxm","aegr","die","poit"};
//      Arrays.sort(ss);  //有s的Arrays表明是一种工具类,所有方法都是静态的 不需要实例化 sort方法可以排序基本数据类型
//      //也是可以排序对象,但是要继承comparable接口,自定义排序规则
//      for(String s:ss) {
//          System.out.println(s);
//      }
        Student[] xx = {  //定义一个对象数组
            new Student("cxm",34),
            new Student("axm",36),
            new Student("ssm",32),
            new Student("kxm",31),
        };
        List<Student> LL= Arrays.asList(xx);
        Collections.sort(LL);
        for(Student ss: xx) {
            System.out.println(ss.toString());
        }
    }
}
class Student implements Comparable<Student>{ 
    //Student实现Comparable接口,但是如果是想按照年龄来排序的话,就会频繁地更改了Student内的代码,非常不灵活
    //解决思路:实例化一个比较器,比较逻辑就在比较器内定义,然后collections.sort(LL,c1)就传入一个比较器对象 c1是比较器
    //注意一旦传入了比较器对象,那么比较逻辑就会用c1里面的
    public String name;
    public int age;
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    @Override
    public int compareTo(Student o) {
        //System.out.println("this age"+this.age);
        //Comparable 有个compareto的方法,实现类必须实现
        //return this.age-o.age; //compareTo最后返回的是负正整数的,负数的排行前面
        //return this.age.compareTo(o.age);  报错:无法在原始类型int上调用compareTo(int)
        return this.name.compareTo(o.name); //String本身实现了compareTo方法
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }
    
}

上一篇 下一篇

猜你喜欢

热点阅读