JAVA集合(2)

来源:互联网 发布:北京知金 编辑:程序博客网 时间:2024/06/05 00:58

Map(接口)
先看一张图
这里写图片描述

Map:“键值”对映射的抽象接口。该映射不包括重复的键,一个键对应一个值。
SortedMap:有序的键值对接口,继承Map接口。

NavigableMap:继承SortedMap,具有了针对给定搜索目标返回最接近匹配项的导航方法的接口。

AbstractMap:实现了Map中的绝大部分函数接口。它减少了“Map的实现类”的重复编码。

Dictionary:任何可将键映射到相应值的类的抽象父类。目前被Map接口取代。

TreeMap:有序散列表,实现SortedMap 接口,底层通过红黑树实现。

HashMap:是基于“拉链法”实现的散列表。底层采用“数组+链表”实现。

WeakHashMap:基于“拉链法”实现的散列表。

HashTable:基于“拉链法”实现的散列表。

一,HashMap
它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。

存储实现:put(key,vlaue)

put 方法 有个返回值 如果 put 进map的key ,之前不存在这个key ,返回null
如果之前有 这个key java 返回是之前的key 所对应的 value

读取实现:get(key)

HashMap 特点

1.HashSet 是使用 hashCode() 和 equals 去重的 HashMap 也是使用 hashCode() 和 equals 判断同一个 key 如果hashCode 和equals 都相同 认为是同一个key 第二个会被去掉
….(key 不变 value 覆盖) 如果hashCode 和equals 有一个不相同 就不是同一个key
第二个就会被添加进去
2.没有迭代顺序

注:HashSet的实质 底层就是 HashMap

二,HashTable

HashTable继承Dictionary类,实现Map接口。其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是”key-value键值对”接口。

HashTable与HashMap的区别
1. Hashtable 是线程安全版本的HashMap ,Hashtable 支持多线程, HashMap不支持
2.HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTable中的key和value都不允许为null。
3.HashTable基于Dictionary类,而HashMap是基于AbstractMap。

三,TreeMap
1,TreeMap的实现是红黑树算法的实现
红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树。
2,TreeMap继承AbstractMap,实现NavigableMap、Cloneable、Serializable三个接口。
3,TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

大部分内容参考了:http://cmsblogs.com/?p=1013

0 0