--Map
与
Collection
并列存在。用于保存具有
映射关系
的数据
:Key-Value
--Map
中的
key
和
value
都可以是任何引用类型的数据
--Map
中的
key
用
Set
来存放,
不允许重复
,
即同一个
Map
对象所对应的类,须重写
hashCode
()
和
equals()
方法。
--常用
String
类作为
Map
的“键”。
--key
和
value
之间存在单向一对一关系,
即通过指定的
key
总能找到唯一的
、
确定的
v
alue
。
--添加、删除操作:
Ø
Object put(Object
key,Object
value)
Ø
Object remove(Object key)
Ø
void
putAll
(Map t)
Ø
void clear()
--元视图操作的方法:
Ø
Set
keySet
()
Ø
Collection values()
Ø
Set
entrySet
()
--元素查询的操作:
Ø
Object get(Object key)
Ø
boolean
containsKey
(Object key)
Ø
boolean
containsValue
(Object value)
Ø
int
size()
Ø
boolean
isEmpty
()
Ø
b
oolean
equals(Object
obj
)
Map实现类之一:HashMap
--Map
接口的常用实现类:
HashMap
、
TreeMap
和
Properties
。
--HashMap
是
Map
接口
使用频率最高
的实现类。
--允许使用
null
键和
null
值,与
HashSet
一样,不保证映射的顺序。
--HashMap
判断两个
key
相等的标准
是:两个
key
通过
equals()
方法返回
true
,
hashCode
值也相等。
--HashMap
判断两个
value
相等的标准
是:两个
value
通过
equals()
方法返回
true
。
/*
* Object put(Object key,Object value):向Map中添加一个元素
* Object put(Object key,Object value):向Map中添加一个元素
* Object
remove(Object key):按照指定的key删除此key-value
* void putAll(Map t)
* void clear():清空
* Object get(Object key):获取指定key的value值。若无此key,则返回null
* Object get(Object key):获取指定key的value值。若无此key,则返回null
* boolean containsKey(Object key)
* boolean containsValue(Object value)
* int size():返回集合的长度 boolean
* isEmpty() boolean equals(Object obj)
*
* HashMap: 1.key是用Set来存放的,不可重复。value是用Collection来存放的,可重复
* 一个key-value对,是一个Entry。所有的Entry是用Set存放的,也是不可重复的。
* 2.向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同。若相同 则只能添加进后添加的那个元素。
* isEmpty() boolean equals(Object obj)
*
* HashMap: 1.key是用Set来存放的,不可重复。value是用Collection来存放的,可重复
* 一个key-value对,是一个Entry。所有的Entry是用Set存放的,也是不可重复的。
* 2.向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同。若相同 则只能添加进后添加的那个元素。
* 此处跟HashSet不同,
HashSet是后面的添加不进去
*/
*/
HashMap的遍历
--Key遍历
Set set = hashMap.
keySet();
--Values遍历
Collection coll = hashMap.
values();
--Key-Value遍历(entry遍历)
Set set = hashMap.entrySet();
for(Object obj :set) {
Map.Entry entry = (Map.Entry)obj;
entry.
getKey();
entry.
getValue();
}
Map实现类之二:LinkedHashMap
--LinkedHashMap
是
HashMap
的子类
--与
LinkedHashSet
类似
,
LinkedHashMap
可以维护
Map
的迭代顺序:
迭代顺序与
Key-
V
alue
对的插入顺序一致
Map实现类之三:TreeMap
--TreeMap
存储
Key-Value
对
时,
需要根据
key-value
对进行排序。
TreeMap
可以保证所有的
Key-Value
对处于有序状态。
--TreeMap
的
Key
的排序:
Ø
自然排序
:
TreeMap
的所有的
Key
必须实现
Comparable
接口,
而且所有的
Key
应该是同一个类的对象,否则将会抛出
ClasssCastException
Ø
定制排序
:创建
TreeMap
时,传入一个
Comparator
对象,该对象负责对
TreeMap
中的所有
key
进行排序。
此时不需要
Map
的
Key
实现
Comparable
接口
--TreeMap
判断
两个
key
相等的标准
:
两个
key
通过
compareTo
()
方法或者
compare()
方法返回
0
。
--若使用自定义类作为
TreeMap
的
key
,
所属类需要重写
equals()
和
hashCode
()
方法,且
equals()
方法返回
true
时,
compareTo
()
方法应返回
0
。
Map实现类之四:Hashtable
--Hashtable
是个
古老的
Map
实现类
,线程安全。
--与
HashMap
不同,
Hashtable
不允许使用 null
作为
key
和
value
--与
HashMap
一样,
Hashtable
也不能保证其中
Key-Value
对的顺序
--Hashtable
判断两个
key
相等、两个
value
相等的标准,与
hashMap
一致。
Map实现类之五:Properties
--Properties
类是
Hashtable
的子类,该对象用于处理属性文件
--由于属性文件里的
key
、
value
都是字符串类型,
所以
Properties
里的
key
和
value
都是字符串类型
--存取数据时,建议使用
setProperty
(String
key,String
value)
方法和
getProperty
(String key)
方法
•Properties pros = new Properties();
•pros.load(newFileInputStream(new File("jdbc.properties")));
•String user = pros.getProperty("user");
•System.out.println(user);