Java API —— TreeMap类

1、TreeMap类概述

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

2、TreeMap案例

TreeMap<String,String>

TreeMap<Student,String>

例子1:

package treemapdemos;
import java.util.Set;
import java.util.TreeMap;
/**
 * Created by gao on 15-12-22.
 */
/*
 * TreeMap:是基于红黑树的Map接口的实现。
 * HashMap<String,String>
 * 键:String
 * 值:String
 */
public class TreeMapDemo01 {
    public static void main(String[] args) {
        // 创建集合对象
        TreeMap<String, String> tm = new TreeMap<String, String>();
        // 创建元素并添加元素
        tm.put("hello", "你好");
        tm.put("world", "世界");
        tm.put("java", "爪哇");
        tm.put("world", "世界2");
        tm.put("javaee", "爪哇EE");
        // 遍历集合
        Set<String> set = tm.keySet();
        for (String key : set) {
            String value = tm.get(key);
            System.out.println(key + "---" + value);
        }
    }
}

输出结果:(唯一和自然排序)

hello---你好

java---爪哇

javaee---爪哇EE

world---世界2

例子2:

package treemapdemos;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;
/**
 * Created by gao on 15-12-22.
 */
/*
 * TreeMap<Student,String>
 * 键:Student
 * 值:String
 */
public class TreeMapDemo02 {
    public static void main(String[] args) {
        // 创建集合对象
        TreeMap<Student, String> tm = new TreeMap<Student, String>(new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int num = s1.getAge() - s2.getAge();
                int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                return num2;
            }
        });
        // 创建学生对象
        Student s1 = new Student("潘安", 30);
        Student s2 = new Student("柳下惠", 35);
        Student s3 = new Student("唐伯虎", 33);
        Student s4 = new Student("燕青", 32);
        Student s5 = new Student("唐伯虎", 33);
        // 存储元素
        tm.put(s1, "宋朝");
        tm.put(s2, "元朝");
        tm.put(s3, "明朝");
        tm.put(s4, "清朝");
        tm.put(s5, "汉朝");
        // 遍历
        Set<Student> set = tm.keySet();
        for (Student key : set) {
            String value = tm.get(key);
            System.out.println(key.getName() + "---" + key.getAge() + "---" + value);
        }
    }
}

输出结果:(唯一和排序)

潘安---30---宋朝

燕青---32---清朝

唐伯虎---33---汉朝

柳下惠---35---元朝

时间: 2025-01-15 12:04:01

Java API —— TreeMap类的相关文章

Java API —— TreeSet类

1.TreeSet类  1)TreeSet类概述 使用元素的自然顺序对元素进行排序 或者根据创建 set 时提供的 Comparator 进行排序 具体取决于使用的构造方法.   2)TreeSet是如何保证元素的排序和唯一性的 底层数据结构是红黑树(红黑树是一种自平衡的二叉树) 例子1: package treesetdemos; import java.util.TreeSet; /** * Created by gao on 15-12-17. */ /* * TreeSet:能够对元素按

Java API —— DateFormat类

1.DateFormat类概述         DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间. 是抽象类,所以使用其子类SimpleDateFormat. 2.SimpleDateFormat构造方法     public SimpleDateFormat():将一个 Date 格式化为日期/时间字符串.(默认模式) public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 S

Java API ——StringBuffer类

1.StringBuffer类概述, 1)我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间.而StringBuffer就可以解决这个问题 2)线程安全的可变字符序列 3)StringBuffer和String的区别 · 前者长度和内容可变,后者不可变.  · 如果使用前者做字符串的拼接,不会浪费太多的资源. 2.构造方法 · public StringBuffer() :无参构造方法 · public StringBuffer(int capacity

Java API —— Calendar类

1.Calendar类概述  Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法. 2.成员方法      public static Calendar getInstance():初始化,返回子类对象 public int get(int field):返回给定日历字段的值 public void add(int field,int am

Java API —— Date类

1.Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 2.构造方法 public Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). public Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数. 3.成员方法 public long getTime() public void setTime(long

Java API —— BigDecimal类

1.BigDecimal类概述  由于在运算的时候,float类型和double很容易丢失精度,演示案例.所以,为了能精确的表示.计算浮点数,Java提供了BigDecimal 不可变的.任意精度的有符号十进制数. 2.构造方法 public BigDecimal(String val):建议使用参数为字符串的构造方法,如果参数为double或float,还是会出现不可预知的精度问题 3.BigDecimal类成员方法 public BigDecimal add(BigDecimal augen

Java API —— BigInteger类

1.BigInteger类概述        可以让超过Integer范围内的数据进行运算 2.构造方法     public BigInteger(String val) 3.BigInteger类成员方法 public BigInteger add(BigInteger val):加 public BigInteger subtract(BigInteger val):减 public BigInteger multiply(BigInteger val):乘 public BigInteg

Java API —— Pattern类

正则表达式 写一个功能实现QQ号码的校验. import java.util.Scanner; public class RegexDemo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的QQ号码:"); String str = sc.nextLine(); boolean f = queckQQ(str); Syst

Java API —— Random类

1.Random类概述 此类用于产生随机数 如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列. 2.构造方法 public Random() : 创建一个新的随机数生成器,没有给种子,默认种子是当前时间的毫秒值 public Random(long seed):使用单个long种子创建一个新的随机数生成器,给定种子后,每次的得到的随机数都是一样的. 3.Random类成员方法 public int nextInt():返回下一个伪随