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排序的五种有用方法相关推荐

  1. java中的五种排序方法_用Java排序的五种有用方法

    java中的五种排序方法 Java排序快速概述: 正常的列表: private static List VEGETABLES = Arrays.asList("apple", &q ...

  2. Java针对ArrayList自定义排序的2种实现方法

    这篇文章主要介绍了Java针对ArrayList自定义排序的2种实现方法,结合实例形式总结分析了Java操作ArrayList自定义排序的原理与相关实现技巧,下面就和动力节点java学院小编一起来看看 ...

  3. 【224期】Java 字符串拼接五种方法的性能比较分析,从执行100次到90万次?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  4. java oracle的2种分页方法

    java oracle的2种分页方法 一物理分页: <!-- 分页查询所有的博客信息 --><select id="findBlogs" resultType=& ...

  5. java创建对象的五种方式

    java创建对象的五种方式 一.使用new关键字 二.使用clone方法 三.使用反序列化 四.使用反射 五.使用Unsafe 一.使用new关键字 如 User user=new User(); 执 ...

  6. npm install 时,卡住不动,五种解决方法

    运行npm install 时,卡住不动,五种解决方法 检查网络设置,删除node_modules重新npm install 配置npm代理 // 配置nmp代理来提高速度,如设置淘宝镜像 npm c ...

  7. MATLAB--计时详解:五种计时方法的使用建议使用方法、基本优缺点

    MATLAB的计时工具是提高程序运行效率的关键辅助工具,但本人每次使用时总是需要重新查询使用方法,且以往的个人使用经验也常常因为间隔时间过长而需要重新积累.为了避免这一问题,因此决定在此一并整理好,自 ...

  8. linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

    不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题,这主要是系统默认语言是uft8所导致,对于该问题可用五种方法进行解决,接下来是小编为大家收集的Linux安装GBK/GB2312 ...

  9. python list方法说明_对python中list的五种查找方法说明

    Python中是有查找功能的,五种方式:in.not in.count.index,find 前两种方法是保留字,后两种方式是列表的方法. 下面以a_list = ['a','b','c','hell ...

最新文章

  1. iOS项目预处理器环境变量设置
  2. 用坐标实现物体的移动c语言,C语言之实现控制台光标随意移动的实例代码
  3. 整理:关于聚簇索引和非聚簇索引的区别
  4. python中单个和批量增加更新的mysql(没有则插入,有则更新)
  5. nginx配置支持http2
  6. 最简单、图解:阿里云服务器上装 Docker 、 CentOS上 docker安装(3分钟装完)
  7. skywalking使用mysql_聊聊skywalking的mysql-plugin
  8. keil无法生成axf文件之解决方法
  9. python中对象的概念是什么_python面向对象编程的基本概念
  10. win7清理系统后,音频设备被禁用,没有声音
  11. 请教各位前辈一个问题。
  12. 大数据发展现状和趋势
  13. 土木专业应用计算机,计算机在土木中的应用
  14. 黑客工具之NBSI介绍
  15. ① 数据库介绍 及 关系型数据库的关系代数表达式
  16. 一个二本本科生如何才能进入腾讯,阿里,百度这些大厂?
  17. 主动降噪ANC(Active Noise Control)
  18. 网传互联网公司大裁员
  19. NXP mpc5744p MBDT编译工具链配置
  20. 华为认证云服务工程师(HCIA-Cloud ServiceV3.0)-- 认证介绍

热门文章

  1. java集合——java.util.Properties类
  2. 防止用户重复提交表单数据,session方式,js方式
  3. jQuery中的几个案例:隔行变色、复选框全选和全不选
  4. 检测到基于堆栈的缓冲区溢出_检测到堆栈粉碎
  5. drill apache_如何使用Apache Drill分析高度动态的数据集
  6. 使用Selenium WebDriver测试自动化的22条实用技巧
  7. 将Quarkus应用程序部署到AWS Elastic Beanstalk
  8. Apache Camel 3 –新增功能前10名
  9. java 并发计数器_Java 8 LongAdders:管理并发计数器的正确方法
  10. jpa 关系拥有方_JPA:确定关系的归属方