java中的五种排序方法

Java排序快速概述:

正常的列表:

private static List VEGETABLES = Arrays.asList("apple", "cocumbers", "blackberry");Collections.sort(VEGETABLES);output: apple, blackberry, cocumbers

反向排序:

private static List VEGETABLES = Arrays.asList("apple", "cocumbers", "blackberry");Collections.sort(VEGETABLES, Collections.reverseOrder());output: cocumbers, blackberry, apple

使用自定义比较器:

private class StringComparator implements Comparator {public int compare(Object o1, Object o2) {String so1 = (String) o1;String so2 = (String) o2;return so1.compareTo(so2);}}private static List VEGETABLES = Arrays.asList("apple", "cocumbers", "blackberry");Collections.sort(VEGETABLES, new StringComparator());output: apple, blackberry, cocumbers

元素排序:

private class Element implements Comparable {private String name;private Double atomicMass;@Overridepublic String toString() {final StringBuilder sb = new StringBuilder();sb.append("Element");sb.append("{name='").append(name).append('\'');sb.append(", atomicMass=").append(atomicMass);sb.append('}');return sb.toString();}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getAtomicMass() {return atomicMass;}public void setAtomicMass(Double atomicMass) {this.atomicMass = atomicMass;}public Element(String name, String mass, double atomicMass) {this.name = name;this.atomicMass = atomicMass;}public int compareTo(Element o) {return this.getAtomicMass().compareTo(o.getAtomicMass());}}ArrayList<Element> elements = new ArrayList<Element>();elements.add(new Element("Hydrogen", "H", 1.00794)); // Hydrogen 1.00794 amu Atomic Masselements.add(new Element("Iron", "Fe", 55.845));elements.add(new Element("Lithium", "Li", 6.941));elements.add(new Element("Lead", "Pb", 207.2));elements.add(new Element("Magnesium", "Mg", 24.305));Collections.sort(elements);   // Sort by Element

输出:

Element{name='Hydrogen', atomicMass=1.00794}Element{name='Lithium', atomicMass=6.941}Element{name='Magnesium', atomicMass=24.305}Element{name='Iron', atomicMass=55.845}Element{name='Lead', atomicMass=207.2}

按时间排序:

SimpleDateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy", Locale.US);try {ArrayList<Date> holidays = new ArrayList<Date>();holidays.add(formatter.parse("May 31, 2010")); //  Memorial Dayholidays.add(formatter.parse("July 4, 2010")); //  Independence Dayholidays.add(formatter.parse("February 15, 2010")); //  Presidents Dayholidays.add(formatter.parse("September 6, 2010")); // Labor Dayholidays.add(formatter.parse("December 24, 2010")); // Thanksgiving Dayholidays.add(formatter.parse("July 5, 2010")); //  federal employees extra day off for July 4thholidays.add(formatter.parse("January 18, 2010")); //  Martin Luther King Dayholidays.add(formatter.parse("November 25, 2010")); // federal employees extra day off for Christmasholidays.add(formatter.parse("October 11, 2010")); // Columbus Dayholidays.add(formatter.parse("December 25, 2010")); // Christmas Dayholidays.add(formatter.parse("January 1, 2010")); // New Year's DayCollections.sort(holidays);  // Native sort for Date is chronological} catch (ParseException e) {e.printStackTrace();}

输出:

sorted:[Fri Jan 01 00:00:00 CET 2010, Mon Jan 18 00:00:00 CET 2010, Mon Feb 15 00:00:00 CET 2010, Mon May 31 00:00:00 CEST 2010, Sun Jul 04 00:00:00 CEST 2010, Mon Jul 05 00:00:00 CEST 2010, Mon Sep 06 00:00:00 CEST 2010, Mon Oct 11 00:00:00 CEST 2010, Thu Nov 25 00:00:00 CET 2010, Fri Dec 24 00:00:00 CET 2010, Sat Dec 25 00:00:00 CET 2010]

您可以在下面查看完整的简单类:

package com.tommyalf.personal.sorting;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;/**
* Created by IntelliJ IDEA.
* User: tommyalf
* Date: 1-dic-2010
* Time: 22.40.49
*/
public class SortDemo {private static List VEGETABLES = Arrays.asList("apple", "cocumbers", "blackberry");;public static void main(String args[]) {SortDemo sd = new SortDemo();sd.normalSort();sd.reverseSort();sd.stringComparator();sd.elementsSort();sd.chronologicalSort();}private void chronologicalSort() {SimpleDateFormat formatter = new SimpleDateFormat("MMMM dd, yyyy", Locale.US);try {ArrayList<Date> holidays = new ArrayList<Date>();holidays.add(formatter.parse("May 31, 2010")); // Memorial Dayholidays.add(formatter.parse("July 4, 2010")); // Independence Dayholidays.add(formatter.parse("February 15, 2010")); // Presidents Dayholidays.add(formatter.parse("September 6, 2010")); // Labor Dayholidays.add(formatter.parse("December 24, 2010")); // Thanksgiving Dayholidays.add(formatter.parse("July 5, 2010")); // federal employees extra day off for July 4thholidays.add(formatter.parse("January 18, 2010")); // Martin Luther King Dayholidays.add(formatter.parse("November 25, 2010")); // federal employees extra day off for Christmasholidays.add(formatter.parse("October 11, 2010")); // Columbus Dayholidays.add(formatter.parse("December 25, 2010")); // Christmas Dayholidays.add(formatter.parse("January 1, 2010")); // New Year's DaySystem.out.println("before sort:" + holidays);Collections.sort(holidays); // Native sort for Date is chronologicalSystem.out.println("sorted:" + holidays);} catch (ParseException e) {e.printStackTrace();}}private void elementsSort() {ArrayList<Element> elements = new ArrayList<Element>();elements.add(new Element("Hydrogen", "H", 1.00794)); // Hydrogen 1.00794 amu Atomic Masselements.add(new Element("Iron", "Fe", 55.845));elements.add(new Element("Lithium", "Li", 6.941));elements.add(new Element("Lead", "Pb", 207.2));elements.add(new Element("Magnesium", "Mg", 24.305));Collections.sort(elements); // Sort by ElementSystem.out.print("Elements sort by atomicMass value:");for ( Element e : elements ) {System.out.println(e);}}private void stringComparator() {Collections.sort(VEGETABLES, new StringComparator());System.out.print("StringComparator:");printList(VEGETABLES);}private void reverseSort() {Collections.sort(VEGETABLES, Collections.reverseOrder());System.out.print("ReverseSort:");printList(VEGETABLES);}private void normalSort() {Collections.sort(VEGETABLES);System.out.print("NormalSort:");printList(VEGETABLES);}private void printList(List vegetables) {for (int i = 0, n = vegetables.size(); i < n; i++) {if (i != 0) {System.out.print(", ");}System.out.print(VEGETABLES.get(i));}System.out.println();}private class StringComparator implements Comparator {public int compare(Object o1, Object o2) {String so1 = (String) o1;String so2 = (String) o2;return so1.compareTo(so2);}}private class Element implements Comparable<Element> {private String name;private Double atomicMass;@Overridepublic String toString() {final StringBuilder sb = new StringBuilder();sb.append("Element");sb.append("{name='").append(name).append('\'');sb.append(", atomicMass=").append(atomicMass);sb.append('}');return sb.toString();}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getAtomicMass() {return atomicMass;}public void setAtomicMass(Double atomicMass) {this.atomicMass = atomicMass;}public Element(String name, String mass, double atomicMass) {this.name = name;this.atomicMass = atomicMass;}public int compareTo(Element o) {return this.getAtomicMass().compareTo(o.getAtomicMass());}}
}

参考:来自Tommy Alf的JCG合作伙伴 Tommy Alf的五种有用的Java排序方法 -博客博客。

翻译自: https://www.javacodegeeks.com/2012/08/five-useful-ways-to-sorting-in-java.html

java中的五种排序方法

java中的五种排序方法_用Java排序的五种有用方法相关推荐

  1. 在java中下列描述错误的是_在 JAVA 中 , 关于类的方法 , 下列描述错误的是 ()._学小易找答案...

    [多选题]价值的特性是 [简答题]输入任一字符串,统计其中数字,字母及其它字符个数 .(25分) [填空题]1.产品整体包括哪五个基本层次 2核心层次产品最基本的层次,是产品的_____ [单选题]纸 ...

  2. java中如何调用dal接口案例_关于Java:接口的目的

    好吧,我认为接口是一种强制对象实现一定数量功能的方法,而不必使用继承.有点像合同.我半明白他们的意思. 但是,如果界面中的所有内容都是: public interface animal{ void e ...

  3. java 中的finally你知多少_「JAVA」详述Java异常体系,处理异常时配上finally效果更佳...

    什么是异常 从事Java开发的小伙伴对于"异常"应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出.那究竟什么是异常?异常即非正常的,不同于平常.一般化的情况.在平时生活中,医生 ...

  4. Java中什么是字符串的拷贝_关于java中字符串对象的拷贝

    1两种数据类型 java中有两种数据类型: 基本数据类型 引用数据类型 基本数据类型有整型.浮点型的数字常量和字符常量,而类是引用数据类型,所谓引用就是一个对象等于另外一个对象时(前提同一类),都使用 ...

  5. java中数值023是什么类型_【Java 教程(原创)】023.参数传值——引用类型参数的传值...

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 零度非安全 于 2017-3-12 14:03 编辑 点击图片穿越到 索引帖,听说有惊喜 ...

  6. java中的可检查和不检查_检查Java测试中发生了什么

    java中的可检查和不检查 有人想到了在Java单元测试中使用try和catch块的想法: @Test public void test() { try { callSomeCode(); } cat ...

  7. java中访问控制修饰符什么含义_关于Java中访问控制修饰符的来由及浅解

    在Java中,制作者为我们提供了一种非常简洁方便地分类管理工作中需要用到的类的概念,就是"包".既然有了这个包,那么我们编写的类就存在于这个定义好的包中了.由于需求的限制,大部分类 ...

  8. 关于java中数据类型叙述正确的是( )_关于Java中数据类型叙述正确的是:

    [判断题]图像的分辨率是指图像单位面积上的象素个数. [填空题]9. Together with the development of bourgeois relationships and form ...

  9. Java中int型如何求幂_关于java:为什么Math.pow(int,int)慢于我的幼稚实现?

    昨天我看到一个问题,问为什么Math.pow(int,int)这么慢,但是问题措辞不佳,没有进行任何研究,因此很快就关闭了. 我做了一些自我测试,发现与整数参数相比,Math.pow方法实际上比我自己 ...

  10. 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...

    在Java中,表示换行符的转义字符是(). A.\nB.\fC.n D.\ddd 更多相关问题 单选(2分) Who\\\'s one the biggest challenges in design ...

最新文章

  1. c语言合法常量2.57e03,[单选] 目前杭州共有世界遗产()项。
  2. AI一分钟|AI聊机器人“Shibuyu Mirai”获日本居住权,传今日头条3亿美元收购Faceu激萌
  3. java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  4. opencv 头盔检测
  5. web开发中的缓存问题的研究(一)
  6. 字节(byte)简介
  7. SylixOS电源管理之外设功耗管理
  8. sql 基础增删改查语句
  9. LeetCode二分法---C语言
  10. 垂涎欲滴!30个美味的食品类移动应用程序【下篇】
  11. 第二十三模板 1什么是模板
  12. php程序员自我描述_PHP程序员求职简历的自我评价范文
  13. php addslashes 防注入,PHP基础-addslashes防sql注入-北漂者
  14. 负载均衡器ribbon和LoadBalancer
  15. Mac电脑的微信截图快捷键
  16. 解决Duplicate entry ‘XXX‘ for key ‘XXX‘
  17. shell 获取当月最后一天的方法
  18. sharding-jdbc4.1.1 分库分表后 mysql查询优化(count)
  19. matlab不定方程,Maple或Matlab怎么解不定方程?
  20. 机器视觉在PCB线路板综合检测的应用

热门文章

  1. Java中的宏变量,宏替换详解。
  2. Echarts报错:Component series.lines not exists. Load it first.
  3. 3班的第二次模拟面试
  4. mybatis使用全注解的方式案例(包含一对多关系映射)
  5. java oschina_简单说说 OSChina 的技术架构
  6. 摘要算法与加密(以MD5算法为例)
  7. 超音速 启动_从根本上讲超音速亚原子Enterprise Java
  8. java记录目录树_Java记录
  9. jdk11 javafx_JDK 11上的JavaFX
  10. 写java代码时的注意事项_从方法返回Java 8的可选项时的注意事项