HashMap集合与TreeMap集合的比较

来源:互联网 发布:世界进出口数据 编辑:程序博客网 时间:2024/05/29 15:41

1、HashMap集合是可以插入Null键的,而TreeMap不可以插入Null键
具体如以下程序所示:

package _11.homework;import java.util.HashMap;import java.util.TreeMap;public class Compare {    public static void main(String[] args){        HashMap<Integer,String> hashMap=new HashMap<Integer,String>();        hashMap.put(null, "sindy");        hashMap.put(0002,null);        hashMap.put(null,null);        System.out.println(hashMap);        System.out.println("------------------------------------------------------------------");        TreeMap<Integer,String> treeMap=new TreeMap<Integer,String>();        treeMap.put(null, "judy");        treeMap.put(0004,null);        treeMap.put(null,null);        System.out.println(treeMap);    }}运行结果:{null=null, 2=null}-----------------------------------------------------------Exception in thread "main" java.lang.NullPointerException    at java.util.TreeMap.compare(TreeMap.java:1188)    at java.util.TreeMap.put(TreeMap.java:531)    at _11.homework.Compare.main(Compare.java:15)

2、HashMap集合的元素唯一并且无序,而TreeMap集合的元素不仅唯一而且是排好顺序的。(原因:TreeMap集合底层的数据结构是基于红黑树的(将数据与根节点进行比较,如果相减为负数放在节点的左边,相为0则拒绝进入,为正数则放在节点右边;并且红黑树是自平衡的。因此TreeMap集合的元素唯一且排好顺序,但是排序是有条件的即必须实现Comparable接口 重写 CmcompareTo(T)方法,一般String和Integer类型底层已经重写过了,可以直接用!若是自己写的类则要重写CompareTo(T)方法);HashMap集合的底层是哈希表结构,只能保证元素的唯一性(哈希表结构重写了equals()方法和hashCode()方法))
具体比较键下列程序:

package _11.homework;import java.util.HashMap;import java.util.TreeMap;public class Compare {    public static void main(String[] args){        HashMap<String,Integer> hashMap=new HashMap<String,Integer>();        hashMap.put("sindy",10);        hashMap.put("amy",3);        hashMap.put("alice",5);        hashMap.put("sindy",10);        System.out.println(hashMap);        System.out.println("------------------------------------------------------------------");        TreeMap<String,Integer> treeMap=new TreeMap<String,Integer>();        treeMap.put("sindy",10);        treeMap.put("amy",3);        treeMap.put("alice",5);        treeMap.put("alice",5);        System.out.println(treeMap);    }}运行结果:{amy=3, alice=5, sindy=10}----------------------------{alice=5, amy=3, sindy=10}
阅读全文
0 0
原创粉丝点击