文档章节

2.3行为参数---用Comparator 来排序

R
 Refresh-LV
发布于 2017/07/07 16:56
字数 236
阅读 6
收藏 0

行为参数中入参为对象,通过比较对象属性来对比排序

---->当比较的是入参的属性类型为String/Integer/BigDecimal时:a.getColor().compareTo(b.getColor());

---->当比较的是入参的属性类型为int(Integer)时:

public class ConsultAppleByWeight {
    public static void main(String[] args) {
        
        List<Apple> apples = Arrays.asList(new Apple("red", 80),
                   new Apple("green", 188),
                   new Apple("green", 200),
                   new Apple("red", 199));
        /*apples.sort(new Comparator<Apple>() {
             public int compare(Apple a1, Apple a2){
             return a1.getWeight() - (a2.getWeight());
             }
            });*/
        //apples.sort((Apple a, Apple b) -> a.getColor().compareTo(b.getColor()));
       apples.sort((Apple a, Apple b) -> a.getWeight() - b.getWeight());//当类型为int/Integer时
       apples.sort((Apple a, Apple b) -> a.getWeight().compareTo(b.getWeight()));//当类型为Integer时
        System.out.println(apples);
    }
    -------Int(Integer)对象与对象属性类型为int(Integer)的排序的区别--------------------------
    @Test
    public void sss() {
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(1);
        arrayList.add(5);
        arrayList.add(3);
        arrayList.add(2);
//        arrayList.sort((a,b) -> a.compareTo(b));
//        Collections.sort(arrayList,(a,b) -> a.compareTo(b));
        Collections.sort(arrayList, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1.compareTo(o2);
            }
        });
        System.out.println(arrayList);
    }
}

有什么有误区的地方,请各位道友指正!

© 著作权归作者所有

R
粉丝 1
博文 23
码字总数 7973
作品 0
仙桃
私信 提问
Comparable与Comparator的区别

前几天在项目中遇到了一个将复杂对象进行排序的问题:计算BingMap地图上距离当前位置5KM内发生事故(TrafficIncident)的点到当前位置的距离,并按距离升序排序。距离都算出来了,但这些Tra...

摆渡者
2014/04/12
979
0
Java设计模式百例 - 策略模式

> 本文源码见:https://github.com/get-set/get-designpatterns/tree/master/strategy 策略(Strategy)模式是对算法的一种封装,是把使用算法的责任和算法本身分割开来,委托给不同的对象管...

享学IT
2017/12/06
0
0
Java中的Comparator()与comparaTo()

1.为什么写? comparator 是javase中的接口,位于java.util包下,该接口抽象度极高,有必要掌握该接口的使用 大多数文章告诉大家comparator是用来排序,但我想说排序是comparator能实现的功能...

qq_39521554
2018/05/09
0
0
java8之lambda介绍

Java是一门面向对象编程语言。面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:但这个相同点并不明显,因为Java的对象往往比较“重量级”:实例化一个...

那位先生
2016/02/19
130
0
Comparable 和 Comparator 的区别

Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。 Comparable 自然排序 Comparable 在 java.lang 包下,是一个接口,内部只有一个方法 ...

Adel
2016/12/13
38
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
36分钟前
4
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
46分钟前
4
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
46分钟前
4
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
51分钟前
4
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
54分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部