集合框架-Map集合-TreeMap存储自定义对象

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存储自定义对象的更多相关文章
- 集合框架-Map集合
* Map集合和Collection集合的区别? * Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的.可以把这个理解为:夫妻对 * Collection集合存储元素是单独出现的, ...
- 集合框架-Map集合-HashMap存储自定义对象
1 package cn.itcast.p6.hashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 im ...
- 集合框架-Map集合练习-记录字母次数思路及代码
1 package cn.itcast.p10.map.test; 2 3 import java.util.Iterator; 4 import java.util.Map; 5 import ja ...
- 集合框架-Map集合重点方法keySet演示
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 集合框架-Map集合特点及常用方法
1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...
- 集合框架-Map集合练习-Map查表法
1 package cn.itcast.p10.map.test; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 public c ...
- 集合框架-Map集合-LinkedHashMap及关联源码操作
1 package cn.itcast.p9.linkedhashmap.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- Java集合框架——Map接口
第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...
随机推荐
- Hibernate使用distinct返回不重复的数据,使用group by 进行分组
//distinct使用 public List<String> distinctDutyDate() { String hql="select distinct(dutyDat ...
- UDP&串口调试助手用法(5)
note 提供安装包 基于win10开发 已通过win10测试,windows其他平台,没有测试 日志 2021-09-18 1.修复计算校验和错误的现象 2.屏蔽不计算校验和位置的REG验证(后期更 ...
- 【LeetCode】5083. Occurrences After Bigram 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串分割遍历 日期 题目地址:https://le ...
- 【九度OJ】题目1180:对称矩阵 解题报告
[九度OJ]题目1180:对称矩阵 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1180 题目描述: 输入一个N维矩阵,判断是否对称 ...
- 【LeetCode】01 Matrix 解题报告
[LeetCode]01 Matrix 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/01-matrix/#/descripti ...
- 【LeetCode】567. Permutation in String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/permutati ...
- 【LeetCode】667. Beautiful Arrangement II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 1079 - Just another Robbery
1079 - Just another Robbery PDF (English) Statistics Forum Time Limit: 4 second(s) Memory Limit: 3 ...
- Intriguing Properties of Contrastive Losses
目录 概 主要内容 广义对比损失 不同的先验 不同的权重比 Feature Suppression DigitOnImageNet dataset RandBit dataset 代码 [Chen T ...
- 以简御繁介绍IOC
1.IOC的理论背景 大家开发理念,一直都是奔着架构稳定.低耦合性.而IOC初衷,就是为了解决模块依赖问题,理解<六大设计原则(SOLID)> 如图所示,在我们开发中,业务的实现,就是靠着 ...