当前位置: 首页 > Java教程 > 正文

Java开发人员如何排序?

收藏文章Loading
收藏
(43)

最近在阅读开源Java项目源代码过程中,我发现Java开发者经常使用两种开发方式排序:一种是使用Collections和Arrays类的sort方法,另一种是使用可排序的数据结构。

使用sort()方法

如果是一个Collection,使用Collections.sort()方法。

// Collections.sort
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
    public int compare(ObjectName o1, ObjectName o2) {
        return o1.toString().compareTo(o2.toString());
    }
});

如果它是一个Array,使用Arrays.sort()方法。

// Arrays.sort
ObjectName[] arr = new ObjectName[10];
Arrays.sort(arr, new Comparator<ObjectName>() {
    public int compare(ObjectName o1, ObjectName o2) {
        return o1.toString().compareTo(o2.toString());
    }
});

使用可排序的数据结构

如果是一个List或者Set,使用TreeSet进行排序。

// TreeSet
Set<ObjectName> sortedSet = new TreeSet<ObjectName>(
new Comparator<ObjectName>() {
    public int compare(ObjectName o1, ObjectName o2) {
        return o1.toString().compareTo(o2.toString());
    }
});
sortedSet.addAll(unsortedSet);

如果是Map,可以使用TreeMap进行排序,TreeMap根据Key排序。

//TreeMap - 使用String.CASE_INSENSITIVE_ORDER
//是一个Comparator,他根据compareToIgnoreCase排列Strings
Map<String, Integer> sortedMap = 
        new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap - 一般来说会定义一个Comparator
Map<ObjectName, String> sortedMap = new TreeMap<ObjectName, String>(
new Comparator<ObjectName>() {
    public int compare(ObjectName o1, ObjectName o2) {
        return o1.toString().compareTo(o2.toString());
    }
});
sortedMap.putAll(unsortedMap);

不好的编程实现

也有很多不好的编程实现,比如使用自定义的排序算法。下面的代码不仅算法效率不高,而且可读性差。

double t;
for (int i = 0; i < 2; i++){
    for (int j = i + 1; j < 3; j++){
        if (r[j] < r[i]) {
            t = r[i];
            r[i] = r[j];
            r[j] = t;
        }
    }
}

原文地址:http://www.programcreek.com/2014/03/how-developers-sort-in-java/

本文固定链接: http://www.csyor.com/692.html - 穿梭于偶然

该日志由 Csyor 于2014年04月08日发表在 Java教程 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Java开发人员如何排序? - 穿梭于偶然
关键字: , , ,

Java开发人员如何排序?:目前有1 条留言

发表评论


快捷键:Ctrl+Enter