Java重修笔记 第四十八天 TreeSet 类、TreeMap 类

  • TreeSet 类

1. TreeSet 底层是 TreeMap

2. 使用默认构造器创建的 TreeSet 对象,添加顺序和取出顺序不是有序的

3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序

4. 可以在构造器中传入一个 Comparator 比较器来手动制定比较规则,之后传入的数据会根据改规则自动进行比较排序,如果根据比较器比较出的结果是相同的,即 compare() 方法返回0的话,判定相同的元素则不会添加到 TreeSet 中,这点尤为重要!

public class TreeSet01 {
    @SuppressWarnings("all")
    public static void main(String[] args) {

        TreeSet treeSet = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                String s1 = (String) o1;
                String s2 = (String) o2;
                return s1.compareTo(s2);
            }
        });

        treeSet.add("jack");
        treeSet.add("tom");
        treeSet.add("sp");
        treeSet.add("bbb");
        treeSet.add("ccc");
        treeSet.add("a");
        treeSet.add("sp");

        System.out.println("treeSet = " + treeSet);

    }
}

运行结果:

3. TreeSet 类实现了 Set 接口,所以有着 Set 接口的特性,例如添加的值不可重复

  • TreeMap 类

1. 经过比较器比较,相同的 key 添加进去,会把旧的 value 替换为新的 value 

2. Key 和 Value 以 Entry 结点的方式存储在 TreeMap 中

3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序

public class TreeMap01 {
    @SuppressWarnings("all")
    public static void main(String[] args) {
        TreeMap treeMap = new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        });

        treeMap.put("Jack", "杰克");
        treeMap.put("Tom", "汤姆");
        treeMap.put("Smith", "史密斯");
        treeMap.put("Super_Minion", "超级兵");
        treeMap.put("Alice", "替换"); // 替换

        System.out.println(treeMap);


    }
}

运行结果:

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值