java HashMap 详解及实例代码
这里有新鲜出炉的 Java 设计模式, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要介绍了 java HashMap 详解及实例代码的相关资料, 需要的朋友可以参考下
- java HashMap
- /*
- * Map 集合的特点
- * 将键映射值的对象, 一个映射不能包含重复的值; 每个键最多只能映射到一个值
- *
- * Map 集合和 Collection 集合的区别?
- * Map 集合存储元素是成对出现的, Map 集合的键是唯一的, 就是可重复的可以把这个理解为: 夫妻对
- * Collection 集合存储元素是单独出现的, Collection 的儿子 Set 是唯一的, List 是可重复的, 可以把这个理解为: 光棍
- *
- * 注意:
- * Map 集合的数据结构值针对键有效, 限值无效
- * Collection 集合的数据结构是针对元素有效
- *
- * Map 集合的功能概述:
- * 1: 添加功能
- * V put(K key,V value);// 添加元素
- * 如果键是第一次存储, 就直接存储元素, 返回 null
- * 如果键不是第一次存储, 就用值把以前的值替换掉, 返回以前的值
- *
- * 2: 删除功能
- * void clear();// 移除所有的键值对元素
- * V remove(Object key);// 根据键删除键值对元素, 并把值返回
- *
- * 3: 判断功能
- * boolean containsKey(Object key);// 判断集合是否包含指定的键
- * boolean containsValue(Object value);// 判断集合是否包含指定的值
- * boolean isEmpty();// 判断集合是否为空
- *
- * 4: 获取功能
- * set<Map,Entry<E,V>> entrySet(); 获取键值对的对象集合
- * V get(Object key);// 根据键获取值
- * Set<K> keySet();// 获取集合中所有键的集合
- * Collection<V> values();// 获取集合中所有值的集合
- *
- * 5: 长度功能
- * int size();// 返回集合中的键值对的对数
- * */
Map 集合的遍历
方式 1, 根据键查询值
获取所有键的集合
遍历键的集合, 获取每一个键
根据键, 查询值
方式 2, 根据键值对的对象查询键和值
获取所有键值对的对象的集合
遍历键值对的对象的集合, 获取到每一个键值对的对象
根据键值对的对象, 查询键和值
方式 1, 根据键查询值
- /*
- * Map 集合的遍历, 根据键查询值
- *
- * 思路:
- * A: 获取所有的键
- * B: 遍历键的集合, 获取得到每一个键
- * C: 根据键查询值
- * */
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- /*
- * Map 集合的遍历, 根据键查询值
- *
- * 思路:
- * A: 获取所有的键
- * B: 遍历键的集合, 获取得到每一个键
- * C: 根据键查询值
- * */
- public class IntegerDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Map < String,
- String > map = new HashMap < String,
- String > ();
- map.put("hello", "world");
- map.put("java", "c++");
- map.put("sql", "os");
- System.out.println(map);
- // A: 获取所有的键
- Set < String > set = map.keySet();
- // B: 遍历键的集合, 获取得到每一个键
- for (String key: set) {
- // C: 根据键查询值
- String value = map.get(key);
- System.out.println(key + "---" + value);
- }
- }
- }
方式 2, 根据键值对的对象查询键和值
- /*
- * Map 集合的遍历, 根据对象查询键和值
- *
- * 思路:
- * A: 获取所有的键值对对象的集合
- * B: 遍历键值对对象的集合, 得到每一个键值对的对象
- * C: 获取键和值
- * */
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Set;
- /*
- * Map 集合的遍历, 根据对象查询键和值
- *
- * 思路:
- * A: 获取所有的键值对对象的集合
- * B: 遍历键值对对象的集合, 得到每一个键值对的对象
- * C: 获取键和值
- * */
- public class IntegerDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Map < String,
- String > map = new HashMap < String,
- String > ();
- map.put("hello", "world");
- map.put("java", "c++");
- map.put("sql", "os");
- System.out.println(map);
- // A: 获取所有的键值对对象的集合
- Set < Map.Entry < String,
- String >> set = map.entrySet();
- // B: 遍历键值对对象的集合, 得到每一个键值对的对象
- for (Map.Entry < String, String > me: set) {
- // C: 获取键和值
- String key = me.getKey();
- String value = me.getValue();
- System.out.println(key + "---" + value);
- }
- }
- }
- /*
- * 1:HashMap 和 Hashtable 的区别?
- * HashMap 线程不安全, 效率高, 允许 null 键和 null 值
- * Hashtable 线程安全, 效率低, 不允许 null 键和 null 值
- *
- * 2:List,Set,Map 等接口是否都继承于 Map 接口?
- * List,Set 不是继承自 Map 接口, 它们继承自 Collection 接口
- * Map 接口本身就是一个顶层接口
- * */
- import java.util.HashMap;
- import java.util.Hashtable;
- public class IntegerDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- HashMap < String,
- String > hm = new HashMap < String,
- String > ();
- Hashtable < String,
- String > ht = new Hashtable < String,
- String > ();
- hm.put("hello", "world");
- hm.put("java", "c++");
- hm.put(null, "sql");
- ht.put("hello", "world");
- ht.put("java", "c++");
- ht.put(null, "sql"); // Exception in thread "main"
- // java.lang.NullPointerException
- }
- }
来源: http://www.phperz.com/article/18/0209/358658.html