`

Java工具类提供的排序功能

阅读更多

今天好好地巩固了一下基础,仔细研究了一下,其实Java工具类真的非常丰富,它已经提供了各种排序功能的实现:

 

1.数组排序

 

java.util.Arrays类提供了各种对象的排序:char[],byte[],long[],int[]和Object[],注Arrays.sort方法排序返回的结果是升序Ascending的排列顺序。你可以定制排序顺序。这个排序和TreeSet的红黑树排序方式不同,Set不允许有重复数据存在,因此,当有重复数据时,可以使用这个工具类进行排序。Arrays提供的排序算法是归并排序算法(当元素数量小于=7时采用的是插入排序),空间复杂度O(n)。

 

/**
 *
 *<p>Test</p>
 *<p>Description:</P>
 *<p>Company:</p>
 *<p>Department:CAS</p>
 *@Author: Tommy Zhou
 *@Since: 1.0
 *@Version:Date:2011-4-26
 *
 **/
public class ArraySortTest {
    public static void main(String[] args) {
        String[] strs = new String[]{"3","2","5","6","2"};
        Arrays.sort(strs, String.CASE_INSENSITIVE_ORDER);
    }
}


另外你还可以指定排序的方式,例如你要修改排序的顺序,由默认的升序改成降序的方式:

 

package sort;

import java.util.Arrays;
import java.util.Comparator;

/**
 *
 *<p>Test</p>
 *<p>Description:</P>
 *<p>Company:</p>
 *<p>Department:CAS</p>
 *@Author: Tommy Zhou
 *@Since: 1.0
 *@Version:Date:2011-4-26
 *
 **/
public class ArraySortTest {
    public static void main(String[] args) {
        String[] strs = new String[]{"3","2","5","6","2"};
        Comparator comparator  = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int c1 = Integer.valueOf(o1);
                int c2 = Integer.valueOf(o2);
                return c2-c1;
            }
        };
        Arrays.sort(strs,comparator);
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
    }
}

 

另外你也可以下列方法指定排列的顺序是降序还是升序:

 

String[] strs1 = new String[]{"3","2","5","6","2"};
        Arrays.sort(strs1,Collections.reverseOrder());
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);

}

 

2.TreeSet对非重复元素进行排序

TreeSet的实现依赖于TreeMap,使用了红黑树进行了排序:

 

package sort;

import java.util.Iterator;
import java.util.TreeSet;

/**
 *
 *<p>Test</p>
 *<p>Description:</P>
 *<p>Company:</p>
 *<p>Department:CAS</p>
 *@Author: Tommy Zhou
 *@Since: 1.0
 *@Version:Date:2011-4-26
 *
 **/
public class TreeSetSortTest {
   
    public static void main(String[] args) {
        TreeSet<String> treeSet = new TreeSet<String>();
        String[] strs = new String[]{"3","5","6","2"};
        for (int i = 0; i < strs.length; i++) {
            treeSet.add(strs[i]);
        }
       
        //Decending sorted iterator
        Iterator iterator = treeSet.descendingIterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
       
        //Ascending sorted iterator
        Iterator iterator1 = treeSet.iterator();
        while(iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
    }

}

 

3.利用集合工具类进行排序

 

package sort;

import java.util.Arrays;
import java.util.Collections;

/**
 *
 *<p>Test</p>
 *<p>Description:</P>
 *<p>Company:</p>
 *<p>Department:CAS</p>
 *@Author: Tommy Zhou
 *@Since: 1.0
 *@Version:Date:2011-4-26
 *
 **/
public class CollectionsSortTest {
    public static void main(String[] args) {
        //Ascending sorted iterator
        String[] strs = new String[]{"3","2","5","6","2"};
        Collections.sort(Arrays.asList(strs));
       
        for (int i = 0; i < strs.length; i++) {
            System.out.println(strs[i]);
        }
       
        //Decending sorted iterator
        String[] strs1 = new String[]{"3","2","5","6","2"};
        Collections.sort(Arrays.asList(strs1),Collections.reverseOrder());
       
        for (int i = 0; i < strs1.length; i++) {
            System.out.println(strs1[i]);
        }
       
    }
}

 

附录:

关于红黑树的JDK实现细节和原理,请参考:

http://www.ibm.com/developerworks/cn/java/j-lo-tree/index.html?ca=drs-

分享到:
评论

相关推荐

    java List排序工具类

    java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List&lt;Person&gt; list = getData(); // 获取无序数据 new ...

    java工具类集合

    Java工具类集合是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常被组织在各种包下,如`java.util`、`java.lang`、`java.io`等。下面将详细介绍...

    java快速排序工具类

    使用泛型的对象排序工具类(使用算法:快速排序),适合初学者学习快速排序的基本原理和实现。

    java常用的工具类整理28个

    以上是Java中28个常用工具类的简要介绍,每个类都有丰富的功能,掌握并灵活运用它们,将极大提升你的Java编程能力。在实际开发中,根据具体需求选择合适的工具类,可以编写出高效、简洁的代码。

    比较全的java工具类

    Java工具类是编程中不可或缺的一部分,它们提供了许多实用的功能,帮助开发者提高代码的效率和可维护性。在Java中,工具类通常包含了各种通用的方法,适用于多种场景,减少了重复编码的工作。以下是一些主要的Java...

    一些java常用的工具类

    总之,Java工具类是提高开发效率的关键,它们封装了常见的操作,减少了代码重复,提高了代码可读性和维护性。"一些java常用的工具类"可能涵盖了上述的多种功能,为开发者提供了方便快捷的编程体验。通过理解和利用...

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    30个java工具类

    Java工具类是程序员在开发过程中经常使用的类库,它们提供了各种通用的功能,使得代码更加简洁、高效。在Java中,工具类通常是静态方法的集合,用于处理常见的编程任务,如字符串操作、数学计算、日期时间处理等。...

    java常用工具类汇总

    - 数组操作工具类可能提供了数组的复制、排序、查找、过滤、转换等功能。例如,`ArrayUtils`类可以简化数组的操作,如合并、分割、填充默认值等。 - 对于对象数组,可能还包括深度拷贝、比较、排序等高级操作。 4...

    java工具类

    Java工具类是Java编程语言中一个非常重要的组成部分,它们提供了许多实用的方法,帮助开发者更高效地处理各种编程任务。在Java中,工具类通常被设计为静态方法集合,不依赖于实例化对象,可以直接调用类中的方法进行...

    27个java工具类

    本压缩包提供了27个常用的Java工具类,涵盖了编码解码、安全加密、日期时间处理、文件操作等多个领域。以下是这些工具类的详细介绍: 1. **Base64Util**:这是一个用于Base64编码和解码的工具类。Base64是一种广泛...

    JAVA对象以及数据的工具类

    总的来说,Java工具类是对基础类型、对象和数据处理的一种抽象和优化,提高了开发效率和代码质量。理解并熟练使用这些工具类,对于提升Java编程能力至关重要。通过不断学习和实践,我们可以更好地利用这些工具类,写...

    java 常用工具类

    Java工具类是Java编程中非常重要的组成部分,它们提供了一系列预定义的方法,可以帮助开发者高效地处理各种常见任务,而无需从头实现。在Java中,最知名的工具类库是`java.util`包,它包含了大量方便实用的类。下面...

    Java实现拖拽列表项的排序功能

    总结一下,Java实现拖拽列表项的排序功能主要包括以下步骤: 1. 启用UI组件的拖放功能,如设置`AllowDrop`、`CanReorderItems`和`IsSwipeEnabled`属性。 2. 监听并处理拖放事件,更新数据模型以反映拖放操作。 3. ...

    牛逼的java常用工具类

    下面,我们将详细探讨一些可能包含在其中的关键Java工具类知识点。 1. **集合框架**:Java集合框架是Java中处理对象集合的核心API,包括List、Set、Map等接口以及ArrayList、HashSet、HashMap等实现类。高效的数据...

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    java 工具类代码集合

    Java工具类代码集合是Java开发中非常重要的组成部分,它们提供了许多通用的功能,使得开发者能够更加高效地编写代码,避免重复劳动。在这个集合中,我们通常会看到各种实用的方法,涵盖字符串处理、数组操作、日期...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    Java各种工具类

    Java工具类库是Java开发中的重要组成部分,它们提供了一系列预定义的函数,帮助开发者更高效地处理各种常见任务。在Java中,工具类通常被组织在各种不同的包下,如`java.util`、`java.lang`、`java.io`等。这些工具...

    自定义java常见工具类

    java开发中常用的工具类 比如 1:hibernate的配置 工具类复写 2:字符串加密 MD5加密 3:javabean到map的自动映射封装 4:javabean java对象到xml的自动封装 5:各种日期格式的处理 6:json的自动封装处理 7:...

Global site tag (gtag.js) - Google Analytics