程序员如何用Java排序

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

使用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());
            }
    });
    // 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());
        }
    });

使用可排序的数据结构

    // 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);

    // TreeMap - using String.CASE_INSENSITIVE_ORDER which is a Comparator that orders Strings by compareToIgnoreCase
    Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
    sortedMap.putAll(unsortedMap);

    //TreeMap - In general, defined 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;
            }
原文链接: programcreek 翻译: ImportNew.com - hejiani
译文链接: http://www.importnew.com/10700.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: hejiani

(新浪微博:@jianihe

查看hejiani的更多文章 >>



相关文章

发表评论

Comment form

(*) 表示必填项

4 条评论

  1. Sartner 说道:

    ….猛一看标题还以为是要讲解排序算法, 自己看看把

    Thumb up 0 Thumb down 0

  2. goIangInAction 说道:

    我也以为是讲算法的,结果进来一看,好水啊。。。

    Thumb up 0 Thumb down 1

  3. kent kwan 说道:

    这文章居然存在?

    Thumb up 0 Thumb down 0

  4. luojiao 说道:

    之前看到的sort里面,他使用了两种排序,一个是归并一个是优化快排,归并好像没优化,就是忘记了他的选择排序的条件是什么

    Thumb up 0 Thumb down 0

跳到底部
返回顶部