比較器Comparator的使用

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章