美文网首页
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