• 说明
    HashMap集合存储的元素的键值是无序的和不可重复的,为了对集合中的元素的键值进行排序,Map接口还有了另一个可以对集合中元素键和值进行排序的实现类TreeMap。
  • 测试类
import entity.Student;
import entity.Teacher;import java.util.Comparator;
import java.util.TreeMap;/*** TreeMap 测试* @author : ZhouMei* @date Date : 2022年08月11日 14:03* @Description: TODO*/
public class TreeMapTest {public static void main(String[] args) {studentTest();teacherTest();}/*** TreeMap 测试 Student 类* Student实现了Comparable接口,并且重写了compareTo方法。此时TreeMap可以不用自定义比较器Comparator,程序默认使用Student类的compareTo方法* 当然也可以使用自定义比较器自定义排序规则*/private static void studentTest(){//1、使用Student类的compareTo方法TreeMap map1 = new TreeMap();map1.put(new Student(1, "张三", 23), "张三");map1.put(new Student(2, "李四", 18), "李四");map1.put(new Student(3, "王五", 22), "王五");map1.put(new Student(4, "赵六", 21), "赵六");System.out.println("TreeMap测试Student类,使用Student默认比较器排序后的结果:" + map1);//2、使用自定义比较器,按年龄倒序TreeMap map2 = new TreeMap(new Comparator<Student>() {public int compare(Student s1, Student s2) {//按年龄排序int num = s2.getAge()-s1.getAge();//如果年龄相同,再按名字排序return num!=0? num : s2.getName().compareTo(s1.getName());}});map2.put(new Student(1, "张三", 23), "张三");map2.put(new Student(2, "李四", 18), "李四");map2.put(new Student(3, "王五", 22), "王五");map2.put(new Student(4, "赵六", 21), "赵六");System.out.println("TreeMap测试Student类,使用自定义比较器排序后的结果:" + map2);}/*** TreeMap 测试 Teacher 类* Teacher类没有实现Comparable接口,此时TreeMap必须使用自定义比较器Comparator*/private static void teacherTest(){TreeMap map = new TreeMap(new Comparator<Teacher>() {public int compare(Teacher t1, Teacher t2) {//按年龄排序int num = t1.getAge()-t2.getAge();//如果年龄相同,再按名字排序return num!=0? num : t1.getName().compareTo(t2.getName());}});map.put(new Teacher(1, "张三", 23), "张三");map.put(new Teacher(2, "李四", 18), "李四");map.put(new Teacher(3, "王五", 22), "王五");map.put(new Teacher(4, "赵六", 21), "赵六");System.out.println("TreeMap测试Teacher类,使用自定义比较器排序后的结果:" + map);}}
  • Student类
package entity;
import lombok.Data;/*** @author : ZhouMei* @date Date : 2022年08月11日 10:20* @Description: TODO*/
@Data
public class Student implements Comparable {private Integer id;private String name;private Integer age;public int compareTo(Object o1) {Student s1 = (Student) o1;if(this.age > s1.age){return 1;}if(this.age == s1.age){return this.name.compareTo(s1.name);}return -1;}public Student(Integer id, String name, Integer age){this.id = id;this.name = name;this.age = age;}}
  • Teacher类
package entity;
import lombok.Data;/*** @author : ZhouMei* @date Date : 2022年08月11日 14:18* @Description: TODO*/
@Data
public class Teacher {private Integer id;private String name;private Integer age;public Teacher(Integer id, String name, Integer age){this.id = id;this.name = name;this.age = age;}}
  • 测试结果
TreeMap测试Student类,使用Student默认比较器排序后的结果:{Student(id=2, name=李四, age=18)=李四, Student(id=4, name=赵六, age=21)=赵六, Student(id=3, name=王五, age=22)=王五, Student(id=1, name=张三, age=23)=张三}
TreeMap测试Student类,使用自定义比较器排序后的结果:{Student(id=1, name=张三, age=23)=张三, Student(id=3, name=王五, age=22)=王五, Student(id=4, name=赵六, age=21)=赵六, Student(id=2, name=李四, age=18)=李四}
TreeMap测试Teacher类,使用自定义比较器排序后的结果:{Teacher(id=2, name=李四, age=18)=李四, Teacher(id=4, name=赵六, age=21)=赵六, Teacher(id=3, name=王五, age=22)=王五, Teacher(id=1, name=张三, age=23)=张三}

JAVA集合,TreeMap排序相关推荐

  1. Java集合—TreeMap底层原理

    原文出自:http://cmsblogs.com/?p=1013.尊重作者的成果,转载请注明出处! 个人站点:http://cmsblogs.com TreeMap的实现是红黑树算法的实现,所以要了解 ...

  2. Java集合--TreeMap

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928 第1部分 TreeMap介绍 TreeM ...

  3. java集合进行排序的两种方式

    java集合的工具类Collections中提供了两种排序的方法,分别是: Collections.sort(List list) Collections.sort(List list,Compara ...

  4. Java集合TreeMap

    TreeMap Map 接口的一个实现类 用于存储键值对映射关系 内部使用二叉树结构存储 不允许出现重复的键 并且,所有的键是按照某种顺序排列的 重复键 如果,出现重复键,将覆盖原有键的Value值 ...

  5. java 集合 自动排序的_java中的自动排序集合 ---- 20160809

    TreeSet的实现: TreeMap实现: 需要注意: 1. 当利用comparator比较两个元素相等时,插入的时候会失败.而hashset是发现两个元素相等时,插入失败返回false.这说明可能 ...

  6. java集合对象排序_java ArrayList集合中的某个对象属性进行排序的实现代码

    开发中有时候需要自己封装分页排序时,List如何对某一属性排序呢,分享一个小实例,大家共勉,希望能对大家有用,请多多指教. 1.Student的Bean如下: public class Student ...

  7. Java实现TreeMap集合的排序:Key键的升序与降序、Value值的排序

    Java 提供的 Map 接口常用的实现类有 HashMap 和 TreeMap.HashMap 类实现的 Map 集合对于添加和删除映射关系效率更高.HashMap 通过哈希码对其内部的映射关系进行 ...

  8. JAVA中的集合与排序

    一:常见的集合类 Collection接口  和   Map接口 Collection ①:collection是最常见的集合的上级接口. ②:继承自collection的常用接口有List,Set, ...

  9. java集合(6):TreeMap源码分析(jdk1.8)

    前言 TreeMap的基本概念: TreeMap集合是基于红黑树(Red-Black tree)的 NavigableMap实现.该集合最重要的特点就是可排序,该映射根据其键的自然顺序进行排序,或者根 ...

  10. java map按照value排序_基础:Java集合需要注意的 5 个问题

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 Java集合中的List.Set和Map作为Java集合食物链的顶级,可谓是各有千秋.本文将对于List.Set和Map之间的联系与区别进行 ...

最新文章

  1. Windows 安装adb
  2. 理解JSON对象:JSON.parse、 JSON.stringify
  3. 修改已经打开的对话框的浏览路径
  4. python 星号*使用方法
  5. Mysql8.0注意url变更写法
  6. 使用Tomcat Native提升Tomcat IO效率
  7. 【LeetCode】Copy List with Random Pointer
  8. 对于已经加入版本控制的文件,我们可以强制忽略文件git update-index --assume-unchanged local.properties...
  9. python google地图_基于Python的离线Google地图操作实现.PDF
  10. 批量将PNG格式转化为JPG格式
  11. tp-link与台式计算机连接教程,台式电脑连接到无线路由器上网教程
  12. Rayson API 框架分析系列之7: 注解处理器(APT)原理
  13. C语言strrchr()函数
  14. 关于背包问题的递归解法
  15. 百万互动出圈爆品复盘,小红书品牌如何高效打造爆品?
  16. .NET操作Excel高效低内存的开源框架 - MiniExcel
  17. Mongodb的Min key和Max key是能查找最大最小值的新功能吗?
  18. awk打印除某列之外的所有列
  19. Oracle中scott数据库,浅析Oracle中sys、system和Scott用户下的数据库连接问题
  20. [软件人生]各大学的软件工程硕士

热门文章

  1. Axure 制作过滤筛选栏
  2. 如何用GraphPad Prism 进行pearson相关性分析
  3. mac双系统w ndows8,U盘如何安装MAC双系统
  4. 隐藏计算机文件夹中,电脑高手教你如何隐藏文件夹的方法
  5. CentOS历史版本下载
  6. 浪潮华为,高端存储市场的双头之争
  7. WMB系列-消息流中节点监视与MM+的使用注意事项
  8. 记参加2008磨房深圳百公里活动
  9. echarts实现仪表盘
  10. 【Pillow库】图片操作