栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中的比较器(重新指定规则的那种)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中的比较器(重新指定规则的那种)

比较器

为什么要用比较器

为什么要用比较器

例如:我们需要将一个数组从小到大排序
代码如下

	int[] arr = {2,5,8,9,1,3,6,7,4};
	Arrays.sort(arr);
	for(int i : arr){
		System.out.print(i + " ");
	}
	//结果为1 2 3 4 5 6 7 8 9 

上述代码我们使用了Arrays这个工具类,那么问题来了很多时候我们希望数据根据自己的规则进行排序,这个时候就需要使用比较器了
还是这个问题不过是将数组从大到小进行排序
代码如下

 public static void main( String[] args ){
        Integer[] arr = {2,5,8,9,1,3,6,7,4};
        Arrays.sort(arr,new MySort ());
        for (int i : arr) {
            System.out.print (i + " ");
        }
    }
}

//实现了比较器接口
class MySort implements Comparator{

    @Override
    public int compare( Integer o1, Integer o2 ) {
    	//o1 - o2 从小到大排
    	//o2 - o1 从大到小排
    	//o1 = o2 谁在前面无所谓
        return o2 - o1;
    }
}
//结果为9 8 7 6 5 4 3 2 1 

这样我们就完成了比较器的使用,是不是感觉很简单,让我们进阶一丢丢,新建一个Person类 ,按照他们的年龄从大到小进行排序,是不是一下子就有头绪啦,快快快动起来,完成之后才能看答案哦
代码如下

 public static void main( String[] args ){
        Person[] arr = new Person[3];
        arr[0] = new Person ("P1" , 18 ,1);
        arr[1] = new Person ("P2" , 78 ,2);
        arr[2] = new Person ("P3" , 10 ,3);
        Arrays.sort (arr , new MySort ());
        for (Person person : arr) {
            System.out.println (person);
        }
}
class MySort implements Comparator{


    @Override
    public int compare( Person o1, Person o2 ) {
        return o2.age - o1.age;
    }
}

class Person{
    String name;
    int age;
    int id;

    public Person( String name, int age, int id ) {
        this.name = name;
        this.age = age;
        this.id = id;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                ", id=" + id +
                '}';
    }
}

是不是和自己写的一样呀,现实情况中,可能会有十分复杂的比较,利用上述规则和使用方法,就可以完成功能的实现啦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/719262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号