比较器Comparator的使用

原创
2017/02/11 21:54
阅读数 95

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;
    }
}

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部