java 的TreeMap

  • 2017-04-07
  • 浏览 (1067)

TreeMap 类不仅实现了 Map 接口,还实现了 Map 接口的子接口 java.util.SortedMap。

TreeMap 类中不允许键对象为 null 或是 基本数据类型,这是因为 TreeMap 中的对象必须是可排序的(即对象需要实现 java.lang.Comparable 接口)

在创建 TreeMap 对象时,如果使用参数为空的构造方法,则根据 Map 对象的 key 进行排序;如果使用参数为 Comparator 的构造方法,则根据 Comparator 进行排序。

在添加、删除和定位映射关系上,TreeMap类要比HashMap类的性能差一些,但是其中的映射关系具有一定的顺序。

如果不需要一个有序的集合,则建议使用HashMap类;如果需要进行有序的遍历输出,则建议使用TreeMap类。

在这种情况下,可以先使用 HashMap。在需要排序时,利用现有的 HashMap,创建一个 TreeMap 类型的实例。

如一个服务器接受的参数:name, age, sex , token。token的值等于各个参数名的升序排序值的组合在加上客户密码的md5值,

在这里是 token=md5(age + name + sex + password)。这时 TreeMap 就可以用上场,参数排序可以用下面的代码获取(这里举的例子参数比较少,参数比较多时更能体现TreeMap的作用):

Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "darcy");
map.put("age", 18);
map.put("sex", "male");
Map<String, Object> param = new TreeMap<String, Object>();
param.putAll(map);
0  赞