1.TreeMap类

  • 概述:键是红黑树结构,可以保证键的排序和唯一性

遍历集合;

package com.bigdat.java.day22;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/*TreeMap类概述键是红黑树结构,可以保证键的排序和唯一性*/
public class TreeMapDemo1 {public static void main(String[] args) {//创建集合对象TreeMap<Integer, String> treeMap = new TreeMap();//向集合中添加元素treeMap.put(1001, "张三");treeMap.put(1002, "李四");treeMap.put(1003, "王五");treeMap.put(1001, "二狗子"); //结果会对张三的结果产生压盖,就只会产生二狗子treeMap.put(1004, "王二麻子");//遍历集合Set<Integer> integers = treeMap.keySet();for (Integer integer : integers) {String s = treeMap.get(integer);System.out.println("编号:"+integer+",姓名:"+s);}System.out.println("===============================================");Set<Map.Entry<Integer, String>> entries = treeMap.entrySet();Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();while (iterator.hasNext()){Map.Entry<Integer, String> next = iterator.next();Integer key = next.getKey();String value = next.getValue();System.out.println("编号:"+key+",姓名:"+value);}}
}

HashMap<Student, String>

注意事项;排序分为自然排序
  • 自然排序:引用类型必须实现Comparable接口(因为源码中compar有一个向下转型的步骤),然后重写compareTo()方法;
    根据需求先比较什么什么就是主要条件因为红黑树采用中序遍历^,如下
@Overridepublic int compareTo(Student4 o) {int i = this.name.compareTo(o.name);//姓名一样,年龄不一定一样int i2 = (i == 0) ? this.age - o.age : i;return i2;}
  • 比较器排序:调用的是引用类型中的有参构造器
    //TreeMap<Student4, Integer> tMap = new TreeMap<>();
    ,引用类中必须实现Comparator接口。然后重写compare()方法或直接在main()方法中实现匿名内部类操作
public class TreeMapDemo2 {public static void main(String[] args) {//创建集合对象//TreeMap<Student4, Integer> tMap = new TreeMap<>();//比较器排序//TreeMap tMap = new <Student4, Integer>TreeMap(new Student4());//匿名内部类实现比较器排序TreeMap<Student4, Integer> tMap = new TreeMap(new Comparator<Student4>(){@Overridepublic int compare(Student4 o1, Student4 o2) {return 0;}});

代码如下:

import java.util.*;/*HashMap<Student,String>*/
public class TreeMapDemo2 {public static void main(String[] args) {//创建集合对象//TreeMap<Student4, Integer> tMap = new TreeMap<>();//比较器排序//TreeMap tMap = new <Student4, Integer>TreeMap(new Student4());//匿名内部类实现比较器排序TreeMap<Student4, Integer> tMap = new TreeMap(new Comparator<Student4>(){@Overridepublic int compare(Student4 o1, Student4 o2) {return 0;}});//创建学生类对象Student4 s1 = new Student4("白骨精",10);Student4 s2 = new Student4("观世音菩萨",32);Student4 s3 = new Student4("铁扇公主",27);Student4 s4 = new Student4("白骨精",10);Student4 s5 = new Student4("太上老君",55);Student4 s6 = new Student4("比较的太上老君",55);//向集合中添加元素tMap.put(s1,1001);tMap.put(s2,1002);tMap.put(s3,1003);tMap.put(s4,1004);tMap.put(s5,1005);tMap.put(s6,1006);//遍历集合Set<Map.Entry<Student4, Integer>> entries = tMap.entrySet();Iterator<Map.Entry<Student4, Integer>> iterator = entries.iterator();while (iterator.hasNext()){Map.Entry<Student4, Integer> next = iterator.next();Student4 key = next.getKey();Integer value = next.getValue();System.out.println("学生:"+key+",编号:"+value);}}
}

引用类型(Stuedent)代码如下:

package com.bigdat.java.day22;
import java.util.Comparator;/*创建学生对象*/
public class Student4 implements Comparator<Student4> {private String name;private int age;public Student4() {}public Student4(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student4{" +"name='" + name + '\'' +", age=" + age +'}';}/*如果走自然排序方法的话:引用类型实现Comparable() 方法然后重写compareTo 方法@Overridepublic int compareTo(Student4 o) {int i = this.name.compareTo(o.name);//姓名一样,年龄不一定一样int i2 = (i == 0) ? this.age - o.age : i;return i2;}*///比较器排序,创建集合时需要传参,然后引用类型必须实现 Comparator 方法//然后再重写 compare 方法@Overridepublic int compare(Student4 o1, Student4 o2) {int i = o1.age - o2.getAge();return i;}}

TreeMap 遍历方法如下:

package com.bigdat.java.day22;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/*TreeMap类概述键是红黑树结构,可以保证键的排序和唯一性*/
public class TreeMapDemo1 {public static void main(String[] args) {//创建集合对象TreeMap<Integer, String> treeMap = new TreeMap();//向集合中添加元素treeMap.put(1001, "张三");treeMap.put(1002, "李四");treeMap.put(1003, "王五");treeMap.put(1001, "二狗子"); //结果会对张三的结果产生压盖,就只会产生二狗子treeMap.put(1004, "王二麻子");//遍历集合Set<Integer> integers = treeMap.keySet();for (Integer integer : integers) {String s = treeMap.get(integer);System.out.println("编号:"+integer+",姓名:"+s);}System.out.println("===============================================");Set<Map.Entry<Integer, String>> entries = treeMap.entrySet();Iterator<Map.Entry<Integer, String>> iterator = entries.iterator();while (iterator.hasNext()){Map.Entry<Integer, String> next = iterator.next();Integer key = next.getKey();String value = next.getValue();System.out.println("编号:"+key+",姓名:"+value);}}
}

Java-TreeMap集合相关推荐

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

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

  2. java TreeMap 源代码分析 平衡二叉树

    TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点. TreeSet 和 TreeMap 的关系 为了让大家了解 TreeMap 和 Tre ...

  3. TreeMap集合特点、排序原理

    TreeMap特点(类似于TreeSet): 1.无序,不允许重复(无序指元素顺序与添加顺序不一致) 2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种 3..底层使用 ...

  4. HashMap集合和TreeMap集合

    ---------------------------HashMap集合的遍历 /第一种 package ji_he;import java.util.*;public class Example16 ...

  5. Java面试集合(二)

    前言 大家好,给大家带来Java面试集合(二)的概述,希望你们喜欢 二 1.请问线程有哪些状态? 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked ...

  6. (7)Java数据结构--集合map,set,list详解

    MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...

  7. JAVA程序设计----集合基础之Map

    Map接口不是继承Collection接口,它与Collection接口是并列存在的,用于储存键-值对(key-value)形式的元素,描述了有不重复的键到值的映射. Map中的key(键)和valu ...

  8. java各种集合的线程安全

    转载自  java各种集合的线程安全 线程安全 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working  memory,一个线程对一个variable进行操作时 ...

  9. java基础集合简介Map(三)下

    From: https://www.cnblogs.com/douyu2580860/p/8358768.html --Map接口简介 今天来看一看map集合,map映射接口,用于存放键值对,< ...

  10. TreeMap集合怎样依照Value进行排序

    ------- android培训.java培训.期待与您交流! ---------- 我们知道,TreeMap集合是依照Key进行排序的,怎样依照Value进行排序呢?如今有一个TreeMap集合 ...

最新文章

  1. MinMaxScaler.fit 归一化数据的方法
  2. wpf采用Xps实现文档显示、套打功能
  3. Vue.js 从 Vue Router 0.7.x 迁移
  4. 京东扳回一城,拼多多该小心了?
  5. Scala的存在类型
  6. python list长度_python的入门阶段 编程思维100题 我跟罗志祥没关系
  7. P4130,jzoj1214-[NOI2007]项链工厂【线段树】
  8. 百度任务型对话系统小记
  9. 远东传动收购机器人_一张图为你总结最近5年在机器人领域收购案例
  10. 【系统架构】VC 开发辅助工具大收集
  11. 原创 leetcode[454]四数相加II /4Sum II 哈希策略
  12. Linux ubuntu centos Shell命令大全
  13. 基于Java的项目开发过程
  14. pytorch下用UCF101数据集仿真C3D模型
  15. mysql设置密码错误修改步骤
  16. 中文词典的扩充和组织
  17. eclipse的放大字体
  18. oracle查询数据都是问号,Oracle数据库PL/SQL Developer查询结果显示问号乱码的解决方法...
  19. 关于移动端滚动列表,不发起请求刷新列表的解决思路
  20. 技术博客哪家强:CSDN、博客园、简书、开源中国OSChina等博客的详细分析比较

热门文章

  1. 在线IDE~快速体验在线编程
  2. 项目整合管理——变更控制流程
  3. 239MB精简版win7系统安装成功
  4. python 循环十次_python循环10次怎么写
  5. 阿里 3月25日 二维矩阵列选元素最小和
  6. 思辨与立场阅读笔记-02 成为你自己思维的批判家
  7. codeforce 595A
  8. 渥太华大学计算机科学博士,加拿大渥太华大学计算机科学CO-OP录取案例
  9. 软件岗位--CTO、技术VP、技术总监、首席架构师
  10. 40岁开始学习Android开发的我成了一名技术主管