Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)
测试内容:
TreeMap<Person,Integer> 的两级排序
1.先按Person.id 从小到大 (需要把int类型转换成包装类 Integer, 才可以使用p1.getId().compareTo( p2.getId()))
2.若id重复,则按然后再按Person.Name 从小到大排序(可以使用String类内置的 compareTo())
测试代码:
package 任务151;
import java.lang.*;
import java.util.*;
public class TestTreeMap { public static void main(String[] args) {
Comparator comp=new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Person && o2 instanceof Person) {
Person p1 = (Person) o1;
Person p2 = (Person) o2; //先按Person.id 从小到大
if (p1.getId().compareTo( p2.getId()) ==0 ) //然后再按Name 从小到大排序
return p1.getName().compareTo(p2.getName());
else
return p1.getId().compareTo( p2.getId());
}
return 0;
}
};
Map<Person,Integer> mp=new TreeMap<>(comp);
mp.put(new Person("AA",22),788);
mp.put(new Person("BB",24),783);
mp.put(new Person("GG",42),718);
mp.put(new Person("DD",42),178);
Set st1=mp.keySet();
for(Object o:st1){
Person p=(Person)o;
System.out.println("["+p.name+","+p.id+"]"+": "+mp.get(o)); //构成键--值对
}
} }
class Person{
String name;
Integer id;
public Person(String name, int id) {
this.name = name;
this.id = (Integer)id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getId() {
return id;
} public void setId(int id) {
this.id = id;
}
}
结果:
[AA,22]: 788
[BB,24]: 783
[DD,42]: 178
[GG,42]: 718
Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)的更多相关文章
- Java基础语法(8)-数组中的常见排序算法
title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...
- Java基础操作面试题:Map集合排序 需要TreeMap 构造方法参数有比较器 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数,使用Map集合完成此题
Map和Collections是同级别的,不能像List排序那样直接用Collections.sort(new Comparator<?>(){ 复写compara方法}); HashMa ...
- Java基础知识强化之多线程笔记06:Lock接口 (区别于Synchronized块)
1. 简介 我们讲到了如何使用关键字synchronized来实现同步访问.本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式 ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- java自定义类型 比较排序 Comparator接口
String service_time = "6:00:00,7:00:00,8:00:00,9:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:0 ...
- java 基础 --int 和Integer的区别
感到脸红:int是整形 -128~127 Integer是正整型,你怎么会想到这样的回答,妈的,有脑子吗?!!! 1,int是基本数据类型,初始为0,Integer为封装类,初始为null ①无论如何 ...
- JAVA 基础编程练习题28 【程序 28 排序算法】
28 [程序 28 排序算法] 题目:对 10 个数进行排序 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即 用第二个元素与后 8 个进行比较,并进 ...
- JAVA 基础编程练习题15 【程序 15 排序】
15 [程序 15 排序] 题目:输入三个整数 x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的 ...
- TreeSet集合排序方式二:定制排序Comparator
Comparator有两种实现方式: 1,匿名内部类 2,创建一个类用于实现Comparator,该类创建的对象就是比较器 Person类 public class Person implements ...
随机推荐
- Flarum 安装问题 编译安装 fileinfo.so
大部分人上传 会遇到文件没有权限这一问题 ,这个好解决 下边是服务器 php.ini 扩展 fileinfo 由于php 版本是7.1.8 最新的 又是用的一键环境安装 所以 没有安装这个扩展 1.去 ...
- 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构
目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...
- Python 日志文件处理
今天想把 Python 项目中的日志 保存到文件中. 找到了方法.非常简单 https://www.cnblogs.com/nancyzhu/p/8551506.html 1. logging.bas ...
- 90%程序员都没有完全答对Cookie和Session的区别
我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ...
- Java操作word转pdf
如果转换后出现乱码,是doc格式的文档的话请转换为docx!!! 下载相关jar包和一个授权到2099年的凭证文件. 链接: https://pan.baidu.com/s/1xudkKqR1-TLL ...
- Python豆瓣源镜像
pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- Oracle10G安装手册
环境准备: 操作系统:windows-7 32bit 数据库:oracle10G 网络环境:不能使用DHCP模式,必须设置一个固定IP地址. 运行安装 1.打开oracle安装文件,请勿直接选择set ...
- Centos7.3安装,并设置网络和防火墙
下载centos7.3安装ISO 最小化安装,随后打通网络,完成网络设置.安装VIM,关闭firewalld防火墙,打开iptables防火墙 重启, vim /etc/sysconfig/netwo ...
- 利用Python进行数据分析 第4章 NumPy基础-数组与向量化计算(3)
4.2 通用函数:快速的元素级数组函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数. 1)一元(unary)ufunc,如,sqrt和exp函数 2)二元(unary) ...
- linux 安装xdebug
一.安装了 xdebug php -m | grep 'xdebug' 如果没有安装就执行 首先根据 phpinfo() 信息 下载对应的版本,具体看参数: 下载地址:https://xdebug.o ...