Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)
代码:
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方法(排序规则)的更多相关文章
- TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法
[自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返 ...
- 继承Comparable接口来实现排序
1.java代码里进行排序(若sql能排序,就不要用代码排序) 可以继承Comparable接口来实现,若是在类中,可以声明Comparator对象,来进行比较 List<Map> map ...
- TreeSet——实现Comparable接口并重写CompareTo()方法
TreeSet是以自然顺序存的数据,例如 Set<Student> students=new TreeSet(); students.add(new Student("111&q ...
- TreeMap——实现comparable接口并重写CompareTo方法
public class TreeMapTest { public static void main(String[] args) { Map<Student,Integer> stude ...
- Effective Java 【考虑实现Comparable接口】
Effective Java --Comparable接口 compareTo方法是Comparable接口的唯一方法.类实现了Comparable接口,表明它的实例具有内在的排序关系. 自己实现co ...
- 向集合中添加自定义类型--建议在自定义类型的时候要重写equals方法
package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定义类型 */public class TestLis ...
- Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法
Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法 摘自:https://blog.csdn.net/qq_31635851/article/details/ ...
- 通过实现System.IComparable接口的CompareTo方法对两个类进行比较
假设现在有一个学生类 class Student { int age; public Student(int age) { this.age = age; } } 要使学生类之间能进行比较,实现Sys ...
随机推荐
- 【NOI P模拟赛】(要素过多的标题)(容斥原理)
题面 0 题目背景 [ 数 据 删 除 ] _{^{[数\,据\,删\,除]}} [数据删除] 1 题目描述 在执行任务时,收集到了 n n n 份能源,其中第 i i i 份的能量值是 ...
- 【NOI P模拟赛】寻找道路(bfs,最短路)
题面 一道特殊的最短路题. 给一个 n n n 个点 m m m 条有向边的图,每条边上有数字 0 \tt0 0 或 1 \tt1 1 ,定义一个路径的长度为这个路径上依次经过的边上的数字拼在一起后在 ...
- [Golang] cgo 调用 .so 捕获异常问题
最近需要在 go 中去调用 .so 库去完成一些事情,go 方面,利用 cgo 可以顺利的调用 .so 中的方法,但是有个问题是 go 没法捕获 .so 那边出现的异常.如果 .so 那边异常了,那么 ...
- 02_Linux基础-文件系统层次结构-提示符-进程-命令格式-隐藏文件-通配符-绝对相对路径-{1..100}-ls-mkdir-其他基础命令
02_Linux基础-ls-mkdir-cd-pwd-man-useradd-su-rm-tree-tab-passwd-w-ssh-touch-date-stat-cp-mv-du-文件系统层次结构 ...
- KingbaseES例程之快速删除表数据
概述 快速删除表中的数据 delete语句删除数据 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放. 这种删除缺点是:删除效率比较低. 这种删除优点是:支持删除部分数据,支持回滚. ...
- Java注解系统学习与实战
背景 为什么要再次梳理一下java注解,显而易见,因为重要啊.也是为研究各大类开源框架做铺垫,只有弄清楚Java注解相关原理,才能看懂大部分框架底层的设计. 缘起 注解也叫做元数据,是JDK1.5版本 ...
- 【Spring】Spring bean中id和name的差异
id和name都是spring 容器中中bean 的唯一标识符. id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用多个 ...
- 【疑难杂症】关于pytorch安装的一些问题
问题一:选用哪个版本 直接下载Anaconda,会自动给你附加最合适的python版本,再去pytorch官网直接找到自己需要的版本下载 问题二:下载pytorch速度太慢 直接把下载代码最后面的-c ...
- 第六章:Django 综合篇 - 19:部署 Django
补充说明:关于项目部署,历来是开发和运维人员的痛点.造成部署困难的主要原因之一是大家的Linux环境不同,这包括发行版.解释器.插件.运行库.配置.版本级别等等太多太多的细节.因此,一个成功的部署案例 ...
- KVM里安装不是原装的winxp系统镜像
从网上下载的winxp系统镜像,虽然是iso格式的,但是里面的内容是如下情况的 因此安装的话,需要采取如下步骤 1.添加一个光驱引导,挂载一个iso格式的pe 2.再添加一个光驱,挂载iso格式的wi ...