文档章节

比较器Comparator的使用

FEINIK
 FEINIK
发布于 2017/02/11 21:54
字数 227
阅读 19
收藏 0

Comparator其实是一个策略类的模式,在java中如果需要将方法1作为参数传递给方法2那么在没有出现lambda表达式的时候,其实还有一种方式可以实现,那就是使用接口的方式,如比较器接口Comparator 如:

class Test {
    public String[] sort(String[] strArrys) {
        Arrays.sort(strArrys, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() - o2.length();
            }
        });
        return strArrys;
    }
}

以这种方式使用虐名内部类时,将会在每次执行调用的时候创建一个新的实例,如果sort方法被重复的执行,考虑将对象存储到静态的final域里,并重用它,如:

class Test {
    private static class StrComparator implements Comparator<String>, Serializable {
        @Override
        public int compare(String o1, String o2) {
            return o1.length() - o2.length();
        }
    }
    public static final Comparator<String> STRING_COMPARATOR = new StrComparator();
    public String[] sort(String[] strArrys) {
        Arrays.sort(strArrys, STRING_COMPARATOR);
        return strArrys;
    }
}

 

© 著作权归作者所有

FEINIK
粉丝 228
博文 59
码字总数 56632
作品 0
广州
高级程序员
私信 提问
似懂非懂 Comparable和 Comparator

在java中提供了两种排序方式:Comparable和 Comparator,它们两个看起来非常的相似,在不是很了解的情况下不知道如何使用,什么情况下使用哪个进行排序,接下来就看下它们的一个区别和使用方...

tsmyk0715
2018/09/29
1K
0
Comparable与Comparator的区别

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

摆渡者
2014/04/12
939
0
Java8 - 使用 Comparator.comparing 进行排序

Java8 - 使用 Comparator.comparing 进行比较排序 使用外部比较器Comparator进行排序 当我们需要对集合的元素进行排序的时候,可以使用java.util.Comparator 创建一个比较器来进行排序。Com...

秋风醉了
2018/09/10
11.4K
2
Java 中 Comparable 和 Comparator 比较

本文,先介绍Comparable 和Comparator两个接口,以及它们的差异;接着,通过示例,对它们的使用方法进行说明。 Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口,就意...

foxeye
2016/03/01
74
0
Java Map 按key排序和按Value排序

Java Map 按key排序和按Value排序 一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 Na...

writeademo
2016/10/12
32
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 ——不知道假装开心,装的像么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :天黑了 你很忧愁, 你说世界上, 找不到四块五的妞, 行走在凌晨两点的马路上, 你疲倦地拿着半盒黄鹤楼。#今日歌曲推荐# 《四块...

小小编辑
今天
2.1K
16
64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
68
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
32
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
112
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部