美文网首页Java 杂谈
Java TreeMap 与 TreeSet

Java TreeMap 与 TreeSet

作者: 聪明的奇瑞 | 来源:发表于2018-05-10 16:11 被阅读66次

TreeMap

  • TreeMap 实现了 SortedMap 接口(基于红黑树的实现),它能保证 Map 中的元素是有序的
  • 可以使用 Comparator 或 Comparable 进行元素的比较

用法

  • 自然排序
TreeMap<Integer,String> treeMap = new TreeMap<>();
treeMap.put(5,"b");
treeMap.put(1,"a");
treeMap.put(6,"c");
treeMap.forEach((k,v)->{
    System.out.println(k+" "+v);
});

TreeSet

  • TreeSet 底层是基于 TreeMap 实现的,非线程安全,但它是一个有序集

TreeSet 用法

  • 自然排序:
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(1);
treeSet.add(6);
treeSet.add(3);
treeSet.add(2);
treeSet.add(7);
treeSet.forEach(z->System.out.println(z));
  • 对象实现 Comparable 排序:
public class Person implements Comparable<Person> {
    private String name;
    private Integer age;

    // .... 构造方法与 set、get 方法
    
    @Override
    public int compareTo(Person o) {
        if (this.age < o.getAge())
            return 1;
        return -1;
    }
}
TreeSet<Person> treeSet = new TreeSet<>();
treeSet.add(new Person("b",1));
treeSet.add(new Person("a",5));
treeSet.add(new Person("b",3));
treeSet.forEach(person -> System.out.println(person));
  • TreeSet 构造函数传入 Comparator
TreeSet<Person> treeSet = new TreeSet<>((o1,o2)->{
if (o1.getAge()>o2.getAge())
    return 1;
if (o1.getAge()==o2.getAge())
    return 0;
return -1;
});
treeSet.add(new Person("b",1));
treeSet.add(new Person("a",5));
treeSet.add(new Person("c",2));
treeSet.forEach(person -> System.out.println(person));

相关文章

  • Java TreeMap 与 TreeSet

    TreeMap TreeMap 实现了 SortedMap 接口(基于红黑树的实现),它能保证 Map 中的元素...

  • [LeetCode] 数据结构 - TreeMap/TreeSe

    TreeSet和TreeMap都是ordered存储结构。而TreeSet又基于TreeMap来实现。 TreeS...

  • java TreeSet错误使用

    与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的。在大神的Java提高篇...

  • JDK源码解析——TreeSet and TreeMap

    TreeSet and TreeMap 总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在...

  • TreeSet and TreeMap

    TreeSet and TreeMap 总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在...

  • jdk源码分析之TreeSet

    1.TreeSet简介 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的...

  • TreeSet与TreeMap笔记

    TreeSet 注意:TreeSet在添加元素时进行排序,数据更改不会影响原来的顺序。使用过程中最好不要改变其元素...

  • JAVA8 TreeSet学习笔记

    TreeSet TreeSet是基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序...

  • TreeSet简介

    TreeSet简介 TreeSet支持排序 基于TreeMap实现 非线程安全的 不支持get(int)来获取指定...

  • 由红黑树原理到 java中 tree的原理

    在java语言中,TreeMap TreeSet 等都是基于红黑树的原理实现的,主要是用它来存储有序的数据,时间复...

网友评论

    本文标题:Java TreeMap 与 TreeSet

    本文链接:https://www.haomeiwen.com/subject/auxtdftx.html