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
- JAVA问题集合2
- Java集合介绍2
- 初识java集合2
- 初识java集合2
- Java 集合总结2
- java 集合2
- java基础集合2
- JAVA集合2
- JAVA集合(2)
- java集合复习2
- java集合详解2
- java集合2--List
- Java集合(2)HashSet
- java集合2
- Java基础-2、集合
- Java集合(2)
- Java集合框架-2
- Java集合框架--2
- poj 1419
- CAS 数据库校验
- Android中日历控件的使用
- 【静下心学习Unity】学习笔记 (一)简介
- 记录几个仓库地址,方便找各种jar包
- JAVA集合(2)
- 获取屏幕尺寸 及 动态设置组件尺寸
- JSP内置对象out
- git .gitignore失效的解决办法
- JAVA随机字符
- Socket编程与线程
- 力控调用ADO组件进行SQL数据库操作
- arm
- test