1 package cn.itcast.p8.treemap.demo;
2
3
4 import java.util.Iterator;
5 import java.util.Map;
6 import java.util.TreeMap;
7
8 import cn.itcast.p2.bean.Student;
9 import cn.itcast.p3.comparator.ComparatorByName;
10
11 public class TreeMapDemo {
12
13 public static void main(String[] args) {
14 // TODO Auto-generated method stub
15 TreeMap<Student,String> tm = new TreeMap<Student,String>(new ComparatorByName());
16 tm.put(new Student("lisi",38), "北京");
17 tm.put(new Student("zhaoliu",24), "上海");
18 tm.put(new Student("xiaoqiang",31), "沈阳");
19 tm.put(new Student("wangcai",28), "大连");
20 tm.put(new Student("zhaoliu",24), "铁岭");
21
22 Iterator<Map.Entry<Student, String>> it = tm.entrySet().iterator();
23
24
25 while (it.hasNext()) {
26 Map.Entry<Student, String> me = it.next();
27 Student key = me.getKey();
28 String value = me.getValue();
29 System.out.println(key.getName()+":"+key.getAge()+"---"+value);
30 }
31 }
32
33 }

TreeMapDemo

 1 package cn.itcast.p2.bean;
2
3 public class Person implements Comparable<Person>{
4 private String name;
5 private int age;
6
7
8 public Person() {
9 super();
10 // TODO Auto-generated constructor stub
11 }
12
13 public Person(String name, int age) {
14 super();
15 this.name = name;
16 this.age = age;
17 }
18 public int compareTo(Person p) {//指定比较类型,传入比较类型
19 // Person p= (Person)obj;
20 int temp = this.age-p.age;
21 return temp==0?this.name.compareTo(p.name):temp;
22 }
23
24
25 @Override
26 public int hashCode() {
27 final int prime = 31;
28 int result = 1;
29 result = prime * result + age;
30 result = prime * result + ((name == null) ? 0 : name.hashCode());
31 return result;
32 }
33
34 @Override
35 public boolean equals(Object obj) {
36 if (this == obj)
37 return true;
38 if (obj == null)
39 return false;
40 if (getClass() != obj.getClass())
41 return false;
42 Person other = (Person) obj;
43 if (age != other.age)
44 return false;
45 if (name == null) {
46 if (other.name != null)
47 return false;
48 } else if (!name.equals(other.name))
49 return false;
50 return true;
51 }
52
53 // @Override
54 // public boolean equals(Object obj) {//不能把Object改为Person,equals方法来自Object,Object没有定义泛型
55 // // TODO Auto-generated method stub
56 // if (this == obj) {
57 // return true;
58 // }
59 // if (!(obj instanceof Person)) {
60 // throw new RuntimeException()
61 // }
62 // Person p = (Person)obj;
63 // return super.equals(obj);
64 // }
65 /*
66 * @Override public int hashCode() { final int prime = 31; int result = 1;
67 * result = prime * result + age; result = prime * result + ((name == null) ? 0
68 * : name.hashCode()); return result; }
69 *
70 * @Override public boolean equals(Object obj) { if (this == obj) return true;
71 * if (obj == null) return false; if (getClass() != obj.getClass()) return
72 * false; Person other = (Person) obj; if (age != other.age) return false; if
73 * (name == null) { if (other.name != null) return false; } else if
74 * (!name.equals(other.name)) return false; return true; }//alt+shift+s
75 * hashCode和equals
76 */
77 public String getName() {
78 return name;
79 }
80 public void setName(String name) {
81 this.name = name;
82 }
83 public int getAge() {
84 return age;
85 }
86 public void setAge(int age) {
87 this.age = age;
88 }
89
90 @Override
91 public String toString() {
92 return "Person:"+getName()+":"+getAge();
93 }
94
95
96 }

Person

 1 package cn.itcast.p2.bean;
2
3 public class Student extends Person {
4
5 public Student() {
6 super();
7 // TODO Auto-generated constructor stub
8 }
9
10 public Student(String name, int age) {
11 super(name, age);
12 // TODO Auto-generated constructor stub
13 }
14
15 @Override
16 public String toString() {
17 // TODO Auto-generated method stub
18 return "Student:"+getName()+":"+getAge();
19 }
20
21 }

Student

 1 package cn.itcast.p3.comparator;
2
3 import java.util.Comparator;
4
5 import cn.itcast.p2.bean.Person;
6
7 public class ComparatorByName implements Comparator<Person> {//ctrl+1快速实现方法
8
9 @Override
10 public int compare(Person o1, Person o2) {
11 // TODO Auto-generated method stub
12 int temp = o1.getName().compareTo(o2.getName());
13 return temp==0?o1.getAge()-o2.getAge():temp;
14 }
15
16 }

ComparatorByName

集合框架-Map集合-TreeMap存储自定义对象的更多相关文章

  1. 集合框架-Map集合

    * Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...

  2. 集合框架-Map集合-HashMap存储自定义对象

    1 package cn.itcast.p6.hashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 im ...

  3. 集合框架-Map集合练习-记录字母次数思路及代码

    1 package cn.itcast.p10.map.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import ja ...

  4. 集合框架-Map集合重点方法keySet演示

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  5. 集合框架-Map集合特点及常用方法

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  6. 集合框架-Map集合练习-Map查表法

    1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...

  7. 集合框架-Map集合-LinkedHashMap及关联源码操作

    1 package cn.itcast.p9.linkedhashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator ...

  8. Java中的集合框架-Map

    前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...

  9. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

随机推荐

  1. Linux使用SCP命令不使用密钥直接进行远程复制(SSH免密登录)

    假设A服务器要把文件复制到B服务器上 首先我们要在A服务器上生成密钥对 参考:https://www.cnblogs.com/pxblog/p/14396409.html 然后在把生成的密钥公钥id_ ...

  2. 【LeetCode】526. Beautiful Arrangement 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  3. 【LeetCode】378. Kth Smallest Element in a Sorted Matrix 解题报告(Python)

    [LeetCode]378. Kth Smallest Element in a Sorted Matrix 解题报告(Python) 标签: LeetCode 题目地址:https://leetco ...

  4. Multiple(poj1465)

    Multiple Time Limit: 1000MS   Memory Limit: 32768K Total Submissions: 7183   Accepted: 1540 Descript ...

  5. [数据结果]C语言 基础指令汇编

    数据结构 C语言核心操作集合 (1)预定义常量和类型 //函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #d ...

  6. 中文字体css编码转换

    各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 t ...

  7. 图解MongoDB集群部署原理(3)

    MongoDB的集群部署方案中有三类角色:实际数据存储结点.配置文件存储结点和路由接入结点. 连接的客户端直接与路由结点相连,从配置结点上查询数据,根据查询结果到实际的存储结点上查询和存储数据.Mon ...

  8. JMeter_分布式压测配置

    前置条件 电脑A,电脑B,电脑C均安装相同版本的JMeter 和JDK.其中电脑A作为控制机,电脑B和电脑C作为施压机 电脑A IP:172.16.0.114 电脑B IP:172.16.0.115 ...

  9. 基于ShardingJDBC的分库分表详细整理

    转载 https://www.cnblogs.com/jackion5/p/13658615.html 前言 传统应用项目设计通常都是采用单一数据库作为存储方案,但是随着互联网的迅猛发展以及应用数据量 ...

  10. spring security 关于 http.sessionManagement().maximumSessions(1);的探究

    1.前言 spring security 支持对session的管理 , http.sessionManagement().maximumSessions(1);的意思的开启session管理,ses ...