您的位置:首页 > 编程语言 > Java开发

1005--Java集合--Map接口

2015-07-04 15:07 661 查看
--Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value
--Map 中的 key和 value都可以是任何引用类型的数据
--Map 中的 key用Set来存放,不允许重复,
即同一个 Map
对象所对应的类,须重写hashCode()和equals()方法。
--常用String类作为Map的“键”。
--key 和 value之间存在单向一对一关系,
即通过指定的 key
总能找到唯一的、确定的value。



--添加、删除操作:
Ø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()
Øboolean
equals(Object obj)

Map实现类之一:HashMap

--Map接口的常用实现类:HashMapTreeMapProperties
--HashMap是
Map 接口使用频率最高的实现类。
--允许使用null键和null值,与HashSet一样,不保证映射的顺序。
--HashMap判断两个
key 相等的标准是:两个key通过
equals()方法返回true,hashCode值也相等。
--HashMap判断两个
value相等的标准是:两个value通过
equals() 方法返回
true。

/*

* 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
* 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是否相同。若相同 则只能添加进后添加的那个元素。
* 此处跟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-Value对的插入顺序一致

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(Stringkey,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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: