数据结构 HashMap 与 TreeMap

1、HashMap无顺序,而TreeMap的输出自然有序。

HashMap

HashMap 基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()]

TreeMap

TreeMap 基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。

Map<String, String> books1 = new HashMap<>();
	    books1.put("bob", "books");
	    books1.put("c", "concurrent");
	    books1.put("a", "a lock");   
	    
	    Map<String, String> books2 = new TreeMap<>();
	    books2.put("bob", "books");
	    books2.put("c", "concurrent");
	    books2.put("a", "a lock");
	          
		Map<Integer, Integer> books3 = new HashMap<>();
        books3.put(1, 6);
        books3.put(5, 4);
        books3.put(7, 66);
        books3.put(43, 19);
        books3.put(9, 7);
        books3.put(19, 7);
     
        Map<Integer, Integer> books4 = new TreeMap<>();
        books4.put(1, 6);
        books4.put(5, 4);
        books4.put(7, 66);
        books4.put(43, 19);
        books4.put(9, 7);
        books4.put(19, 7);
        
        System.out.println(books1);
        System.out.println(books2);
        System.out.println(books3);
        System.out.println(books4);

{a=a lock, c=concurrent, bob=books}
{a=a lock, bob=books, c=concurrent}
{1=6, 19=7, 5=4, 7=66, 9=7, 43=19}
{1=6, 5=4, 7=66, 9=7, 19=7, 43=19}

结论

如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。除此之外,由于HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap。

2、HashMap 和 TreeMap 都是非线程安全
3、TreeMap中默认是按照升序进行排序的,如何让他降序

通过自定义的比较器来实现 -----定义一个比较器类,实现Comparator接口,重写compare方法,有两个参数,这两个参数通过调用compareTo进行比较。

参考文献:https://www.cnblogs.com/javazhiyin/p/11652526.html

4、HashMap可以允许一个null key和多个null value。而TreeMap不允许null key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值