本文主要是介绍使用 java.util.TreeMap 类 tailMap headMap fisrtKey lastKey,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TreeMap 类不仅实现了 Map 接口,还实现了 Map 接口的子接口 java.util.SortedMap。
TreeMap 类中不允许键对象为 null 或是 基本数据类型,这是因为 TreeMap 中的对象必须是可排序的(即对象需要实现 java.lang.Comparable 接口)
TreeMap 类通过实现 SortedMap 接口得到的方法如表1所示:
方法名称 | 返回值类型 | 说明 |
comparator() | Comparator<? super K> | 获取 TreeMap 实例使用的 Comparator。使用空的构造方法创建的 TreeMap 实例,则返回 null |
fisrtKey() | K | 获取第一个(排在最低的)对象的 Key |
lastKey() | K | 获取最后个(排在最高的)对象的 Key |
headMap(K toKey) | SortedMap<K,V> | 获取一个子集。其所有对象的 key 的值小于 toKey |
subMap(K fromKey, K toKey) | SortedMap<K,V> | 获取一个子集。其所有对象的 key 的值小于 toKey ,大于等于 fromKey |
tailMap(K fromKey) | SortedMap<K,V> | 获取一个子集。其所有对象的 key 的值大于等于 fromKey |
表1 TreeMap类通过实现java.util.SortedMap接口得到的方法
在创建 TreeMap 对象时,如果使用参数为空的构造方法,则根据 Map 对象的 key 进行排序;如果使用参数为 Comparator 的构造方法,则根据 Comparator 进行排序。
HashMap VS. TreeMap
在添加、删除和定位映射关系上,TreeMap类要比HashMap类的性能差一些,但是其中的映射关系具有一定的顺序。
如果不需要一个有序的集合,则建议使用HashMap类;如果需要进行有序的遍历输出,则建议使用TreeMap类。 在这种情况下,可以先使用 HashMap。在需要排序时,利用现有的 HashMap,创建一个 TreeMap 类型的实例(例如下面的例子)。
Java代码
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap; public class TestCollection { public static void main(String[] args) { System.out.println("开始:"); Person person1 = new Person("马先生", 220181); Person person2 = new Person("李先生", 220193); Person person3 = new Person("王小姐", 220186); Map<Number, Person> map = new HashMap<Number, Person>(); map.put(person1.getId_card(), person1); map.put(person2.getId_card(), person2); map.put(person3.getId_card(), person3); // HashMap System.out.println("HashMap,无序:"); for (Iterator<Number> it = map.keySet().iterator(); it.hasNext();) { Person person = map.get(it.next()); System.out.println(person.getId_card() + " " + person.getName()); } // TreeMap System.out.println("TreeMap,升序:"); TreeMap<Number, Person> treeMap = new TreeMap<Number, Person>(); treeMap.putAll(map); for (Iterator<Number> it = treeMap.keySet().iterator(); it.hasNext();) { Person person = treeMap.get(it.next()); System.out.println(person.getId_card() + " " + person.getName()); } System.out.println("TreeMap,降序:"); TreeMap<Number, Person> treeMap2 = new TreeMap<Number, Person>(Collections.reverseOrder()); treeMap2.putAll(map); for (Iterator it = treeMap2.keySet().iterator(); it.hasNext();) { Person person = (Person) treeMap2.get(it.next()); System.out.println(person.getId_card() + " " + person.getName()); } System.out.println("结束!"); }
}
TreeMap 的 tailMap()、headMap()、firstKey() 方法使用
import java.util.SortedMap;
import java.util.TreeMap;/*** Author: heatdeath* Date: 2018/5/13* Desc:*/
public class TreeMapDemo {public static void main(String[] args) {// creating mapsTreeMap<Integer, String> treemap = new TreeMap<>();SortedMap<Integer, String> treemapincl;// populating tree maptreemap.put(2, "two");treemap.put(1, "one");treemap.put(3, "three");treemap.put(6, "six");treemap.put(5, "five");System.out.println("Getting tail map");treemapincl = treemap.tailMap(3);System.out.println("Tail map values: " + treemapincl);treemapincl = treemap.headMap(3);System.out.println("Head map values: " + treemapincl);System.out.println("First key is: " + treemap.firstKey());}
}
Getting tail map
Tail map values: {3=three, 5=five, 6=six}
Head map values: {1=one, 2=two}
First key is: 1
这篇关于使用 java.util.TreeMap 类 tailMap headMap fisrtKey lastKey的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!