代码:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class Emp{
    String name;
    int age;

    public Emp(String name,int age) {
        this.name=name;
        this.age=age;
    }

    public String toString() {
        return "Emp name="+name+" age="+age;
    }
}
public class Dept {
    private List<Emp> emps;

    public Dept() {
        emps=new ArrayList<Emp>();

        emps.add(new Emp("Bill",32));
        emps.add(new Emp("Cindy",42));
        emps.add(new Emp("Cindy",12));
        emps.add(new Emp("Cindy",52));
        emps.add(new Emp("Douglas",92));
        emps.add(new Emp("Andy",22));
    }

    public void printEmps() {
        for(Emp emp:emps) {
            System.out.println(emp);
        }
    }

    /**
     * Sort by age
     */
    public void sort1() {
        emps.sort(new Comparator<Emp>() {
           public int compare(Emp a1, Emp a2){
            return a1.age-a2.age;
          }
        });
    }

    /**
     * Sort by name
     */
    public void sort2() {
        emps.sort((Emp a1, Emp a2)->a1.name.compareTo(a2.name));
    }

    /**
     * Sort by name,if same name,sort by age
     */
    public void sort3() {
        emps.sort(new Comparator<Emp>() {
           public int compare(Emp a1, Emp a2){
              int result=a1.name.compareTo(a2.name);

              if(result==0) {
                  return a1.age-a2.age;
              }else {
                  return result;
              }
          }
        });
    }

    public static void main(String[] args) {
        Dept dept=new Dept();
        dept.sort1();
        dept.printEmps();

        System.out.println("--------------");
        dept.sort2();
        dept.printEmps();

        System.out.println("--------------");
        dept.sort3();
        dept.printEmps();
    }
}

输出:

Emp name=Cindy age=12
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92
--------------
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=12
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92
--------------
Emp name=Andy age=22
Emp name=Bill age=32
Emp name=Cindy age=12
Emp name=Cindy age=42
Emp name=Cindy age=52
Emp name=Douglas age=92

--END-- 2019.11.06

[java]三种自定义链表排序方式的更多相关文章

  1. 从同步阻塞聊到Java三种IO方式

    本文总结自 https://zhuanlan.zhihu.com/p/34408883, https://www.zhihu.com/question/19732473中愚抄的回答, http://b ...

  2. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  3. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  4. 三种实现Ajax的方式

    本文主要是比较三种实现Ajax的方式 1. prototype.js 2. jquery1.3.2.min.js 3. json2.js Java代码 收藏代码 后台处理程序(Servlet),访问路 ...

  5. javascript 中数组的创建 添加 与将数组转换成字符串 页面三种提交请求的方式

    创建js数组 var array=new Array(); Java中创建数组 private String[] array=new String[3]; 两个完全不同的,js中是可变长度的 添加内容 ...

  6. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

  7. 三种Singleton的实现方式

    来源:http://melin.iteye.com/blog/838258 三种Singleton的实现方式,一种是用大家熟悉的DCL,另外两种使用cas特性来实现. public class Laz ...

  8. Request三种获取数据的方式

    今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Req ...

  9. Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

    一.三种文件导入的方式比较:   类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义 ...

随机推荐

  1. kubernetes 资源清单定义入门

    k8s中的资源 什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet Deploymen ...

  2. ping IP 带时间戳循环显示并写入日志(windos版+linux版)

    在工作中,判断网络是否通畅,首选命令就是ping,但有时候我们需要持续ping一个或多个地址时,需要加 -t 即可,但有时候需要在ping的时候加入时间戳并把ping记录写入到日志里面,方法如下: w ...

  3. 阿里P7详细解答JVM性能调优之监控工具

    javap 和 javac javac -verbose 类名.java java -verbose 类名 javap -c 类名 javap -verbose 类名 JAVAP -HELP 用法: ...

  4. HTML和XML中的转义字符

    HTML中的转义字符  HTML中<, >,&等有特别含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用他们的转义序列,如下所示: & ...

  5. Devices Tree加载流程

    DT.IMG布局 hdr zImage Ramdisk.img DT.img 其中DT.img由DTBTOOL打包所有编译生成的dtb生成:布局如下: DT header dt_entry_0 dt_ ...

  6. wxpython中设置radiobox相关使用

    #coding=utf-8 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1, ...

  7. linux网络编程之posix线程(一)

    今天继续学习posix IPC相关的东东,消息队列和共享内存已经学习过,接下来学习线程相关的知识,下面开始: [注意]:创建失败这时会返回错误码,而通常函数创建失败都会返回-1,然后错误码会保存在er ...

  8. 【数组模拟-小顶堆的插入构造/遍历】PAT-L2-012.-关于堆的判断--数组模拟

    L2-012. 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: “x is the root”:x是根结点: “x and y ar ...

  9. python 实现定时任务

    需求: 想实现 每周一到周五下班钉钉打卡提醒,每周四发周报提醒 使用了二种方法实现 一:apscheduler,代码如下 import json,requests,datetime from apsc ...

  10. PostgreSQL、Greenplum 日常监控 和 维护任务

    背景 Greenplum的日常监控点.评判标准,日常维护任务. 展示图层 由于一台主机可能跑多个实例,建议分层展示. 另外,即使是ON ECS虚拟机(一个虚拟机一个实例一对一的形态)的产品形态,实际上 ...