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接口的常用实现类: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 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);
--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接口的常用实现类: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 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);
相关文章推荐
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局
- Myeclipse启动优化
- 在Mac下Eclipse创建Android工程失败的解决
- Myeclipse的web工程跟Eclipse互相转换
- java.lang.UnsupportedClassVersionError: Bad version number in .class
- Character decoding failed. Parameter skipped.java.io.CharConversionException: isHexDigit.
- java框架怎样学?
- java类的初始化顺序
- Java核心API -- 10(File、RandomAccessFile)
- 《Java课程实习》日志(周六)
- Spring 从零开始-03
- java 泛型
- java教程网
- Eclipse 中的GitHub插件
- Java彻底 - WEB容器的侦听具体解释 ServletContextListener
- 毫秒转换 成日期 相互转换
- java正则表达式大全
- java图片高质量压缩
- spring组件<context:component-scan>详解
- 使用Eclipse-Maven-git做Java开发(3)--Eclipse的安装和配置