美文网首页
Java集合中TreeMap的用法教程

Java集合中TreeMap的用法教程

作者: 慕辙 | 来源:发表于2019-03-14 21:34 被阅读0次

    TreeMap是Map实现类SortMap的实现类。TreeMap实现了NavigableMap接口,内部的结构是基于红黑树的。
    红黑树是由节点组成的数据结构,其中从根节点开始,树的每一个节点的左分支的节点元素的都小于该节点,右分支的节点元素都大于该节点。定义的大小顺序是按照元素的自然顺序或者是自定义的大小顺序。
    提到的自然排序和自定义排序两种排序方式:

    • 自然排序:默认情况下,TreeMap会对键值对进行自然排序即整数按照升序的排序方式,字符串按照字母顺序进行排序。
    • 自定义排序:当我们需要特定的排序方式时,我们可以在定义TreeMap时,创建Comparator对象定义自己的排序规则。

    构造函数

    1. TreeMap()——按自然顺序创建一个新的空TreeMap
    2. TreeMap(Comparator<? super K> coparator)——按给定的自定义Comparator排序方式创建TreeMap
    3. TreeMap(Map<? extends K,? extends V> m)——创建一个包含与给定映射相同映射的新TreeMap映射,根据键的自然顺序排序
    4. TreeMap(SortedMap<K,? extends V> m)——创建一个包含与给定映射相同映射的新TreeMap映射,使用与指定映射相同的顺序

    常用方法

    1. Map.Entry<K,V> ceilingEntry(K key)——返回与大于或等于给定键的最小键关联的键 - 值映射,或者null如果没有这样的键。
    2. K ceilingKey<K key>——返回大于或等于给定键的最小键,或者null,如果没有这样的键。
    3. void clear()——删除该TreeMap中所有映射
    4. Object clone()——返回该TreeMap实例的浅拷贝的对象
    5. Comparator<? super K> comparator()——返回对该TreeMap中键进行排序的比较器,或者null
    6. NavigableSet<K> descendingKeySet()——返回NavigableSet映射中包含的键的逆序
    7. NavigableMap<K,V> descendingMap()——返回此映射中包含的映射的逆序
    8. Set<Map.Entry<K,V>> entrySet()——返回TreeMap中的每一个键值对的Set对象
    9. Map.Entry<K,V> firstEntry()——返回映射中最小键的键值对,或者null

    用法举例:

    package main;
    
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class Main {
        public static void main(String[] args) {
            TreeMap<Integer, String> treeMap = new TreeMap<>();
            treeMap.put(3, "Wuhan");
            treeMap.put(15, "Xian");
            treeMap.put(2, "Hongkong");
            treeMap.put(8, "Guizhou");
            treeMap.put(34, "Guiling");
            treeMap.put(12, "Jingzhou");
            treeMap.put(21, "Qianjiang");
            Set tSet = treeMap.entrySet();
            Iterator iter = tSet.iterator();
            while (iter.hasNext()) {
                Map.Entry hmEntry = (Map.Entry) iter.next();
                System.out.println("Key is " + hmEntry.getKey());
                System.out.println("Value is " + hmEntry.getValue());
            }
            System.out.println(treeMap.lastEntry());
            System.out.println(treeMap.lastKey());
            System.out.println(treeMap.higherKey(14));
            System.out.println(treeMap.higherEntry(8));
            treeMap.replace(8, "Guizhou", "LA");
            System.out.println(treeMap.higherEntry(3));
        }
    }
    

    结果:

    Key is 2
    Value is Hongkong
    Key is 3
    Value is Wuhan
    Key is 8
    Value is Guizhou
    Key is 12
    Value is Jingzhou
    Key is 15
    Value is Xian
    Key is 21
    Value is Qianjiang
    Key is 34
    Value is Guiling
    34=Guiling
    34
    15
    12=Jingzhou
    8=LA
    

    相关文章

      网友评论

          本文标题:Java集合中TreeMap的用法教程

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