代码:

 1 import java.util.*;
2
3 /**
4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则)。
5 * TreeMap容器的Key是自动排序的,Key为自定义类时,必须重写排序规则。
6 * Iterator迭代器遍历Map容器
7 */
8 public class DiySort {
9
10 /**
11 * 测试
12 * @param args
13 */
14 public static void main(String[] args) {
15 Temp t1 = new Temp(55,3.1,"第一个对象");
16 Temp t2 = new Temp(22,3.7,"第二个对象");
17 Temp t3 = new Temp(11,3.3,"第三个对象");
18 Temp t4 = new Temp(22,3.9,"第四个对象");
19 Temp [] ts = {t1,t2,t3,t4};
20 Arrays.sort(ts);
21 System.out.println("看看Arrays帮我排的序:");
22 System.out.println(Arrays.toString(ts));
23
24 //TreeMap容器的Key是自动排序的
25 TreeMap<Temp,String> tm1 = new TreeMap<>();
26 tm1.put(t1,"值1");
27 tm1.put(t2,"值2");
28 tm1.put(t3,"值3");
29 tm1.put(t4,"值4");
30 System.out.println("看看TreeMap里面的样子:");
31
32 //Iterator迭代器遍历容器,hasNext()判断此节点是否为空,next()返回此节点并且指向下一个节点。
33 Set<Map.Entry<Temp,String>> ss = tm1.entrySet();
34 for(Iterator<Map.Entry<Temp,String>> itr = ss.iterator(); itr.hasNext();){
35 Map.Entry<Temp,String> temp = itr.next();
36 System.out.println("Key:"+temp.getKey()+"value"+temp.getValue());
37 }
38 }
39 }
40
41 /**
42 * 某个类作为key值时,需要继承Comparable接口,重写compareTo方法(排序规则)。
43 */
44 class Temp implements Comparable<Temp>{
45 int i;
46 double d;
47 String str;
48
49 /**
50 * 此类的排序规则,
51 * @param o
52 * @return 1为大于传进来的数,0为相等,-1为小于
53 */
54 @Override
55 public int compareTo(Temp o) {
56 if(this.i>o.i){//先看i的值大小
57 return 1;
58 } else if(this.i==o.i){
59 if(this.d>o.d){//i的值相等时,看d的值大小
60 return 1;
61 }else if(this.d==o.d){
62 return 0;
63 }else {
64 return -1;
65 }
66 }else {
67 return -1;
68 }
69 }
70
71 /**
72 * 构造器
73 */
74 public Temp(int i, double d, String str) {
75 this.i = i;
76 this.d = d;
77 this.str = str;
78 }
79
80 @Override
81 public String toString() {
82 return "Temp{" +
83 "i=" + i +
84 ", d=" + d +
85 ", str='" + str + '\'' +
86 '}';
87 }
88 }

运行结果:

Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)的更多相关文章

  1. TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法

    [自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...

  2. java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

    /*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...

  3. 继承Comparable接口来实现排序

    1.java代码里进行排序(若sql能排序,就不要用代码排序) 可以继承Comparable接口来实现,若是在类中,可以声明Comparator对象,来进行比较 List<Map> map ...

  4. TreeSet——实现Comparable接口并重写CompareTo()方法

    TreeSet是以自然顺序存的数据,例如 Set<Student> students=new TreeSet(); students.add(new Student("111&q ...

  5. TreeMap——实现comparable接口并重写CompareTo方法

    public class TreeMapTest { public static void main(String[] args) { Map<Student,Integer> stude ...

  6. Effective Java 【考虑实现Comparable接口】

    Effective Java --Comparable接口 compareTo方法是Comparable接口的唯一方法.类实现了Comparable接口,表明它的实例具有内在的排序关系. 自己实现co ...

  7. 向集合中添加自定义类型--建议在自定义类型的时候要重写equals方法

    package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定义类型 */public class TestLis ...

  8. Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法

    Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法 摘自:https://blog.csdn.net/qq_31635851/article/details/ ...

  9. 通过实现System.IComparable接口的CompareTo方法对两个类进行比较

    假设现在有一个学生类 class Student { int age; public Student(int age) { this.age = age; } } 要使学生类之间能进行比较,实现Sys ...

随机推荐

  1. Linux驱动开发十六.input系统——3.系统自带的input驱动

    前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配置然后在设备树中定义 ...

  2. 尝试理解Linux容器进程与宿主机共享内核到底是什么意思?

    背景 近期接触容器技术时,经常看到各类比较容器与虚拟机区别的文章中会提到:容器是共享宿主机的内核,而虚拟机则是拥有自己独立的内核,所以不可能在Linux上用容器运行windows,但是用虚拟机则可以. ...

  3. CodeForces - 1629C

    Problem - 1629C - Codeforces 题意: 一个序列,每次可以从开头选择一个长度为K的序列,然后得到这个序列的MEX(最小的未出现的数),问最后可以求得的字典大小最大的序列是多少 ...

  4. 第八十七篇:Vue动态切换组件的展示和隐藏

    好家伙, 1.什么是动态组件? 动态组件指的是动态切换组件的限制与隐藏 2.如何实现动态组件渲染 vue提供了一个内置的<component>组件,专门用来实现动态组件的渲染. 可以将其看 ...

  5. OOM故障处理流程

    一.OOM机制概述 Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,为防止内存耗尽而自动把该进程 ...

  6. 【微服务】- Nacos - 注册中心

    微服务 - 注册中心 - Nacos 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 上一 ...

  7. 使用k8s部署springcloud解决三大问题

    1.正式环境使用的话启动时需要指定使用正式的配置文件,这个要咋处理? 解决办法 文章地址:https://www.cnblogs.com/sanduzxcvbnm/p/13262411.html 分析 ...

  8. 黑马程序员关于MongoDB的教程

    基础:https://files.cnblogs.com/files/sanduzxcvbnm/mongodb_base.pdf 理解 MongoDB的业务场景.熟悉MongoDB的简介.特点和体系结 ...

  9. while.for循环和基本数据类型内置方法

    while循环补充说明 流程控制之for循环 基本数据类型内置方法 内容详细 1.死循环 真正的死循环是一旦执行,Cpu的功耗会急速上升 知道系统采取紧急措施 所以 尽量不要让cpu长时间不断运算. ...

  10. ERP 与 CRM 之间有什么联系?

    ERP与CRM都涉及到客户的管理,在客户信息数据里很大一部分是重合的,可以共用的,即ERP里的客户信息可以为CRM所用,CRM的客户信息,亦可为ERP所用!在关系上可以理解为CRM就是ERP的最前端, ...