您的位置:首页 > 其它

05 深入了解Map集合

2018-03-14 10:05 316 查看
一: Map集合的特点:
  将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 
二: Map集合和Collection集合的区别?
  Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对
  Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)
Map集合的数据结构值针对键有效,跟值无关
  Collection集合的数据结构是针对元素有效
Map集合功能:添加   删除   获取  判断  长度    遍历 代码如下:package Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/***
*
*
* 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<K,V>> entrySet()返回的是键值对对象的集合
* V get(Object key):根据键获取值
* Set<K> keySet():获取集合中所有键的集合
* Collection<V> values():获取集合中所有值的集合
* 5:长度功能
* int size():返回集合中的键值对的对数
*
*
*/
public class MapDemo {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String,String>();
//添加功能
// 如果键是第一次存储,就直接存储元素,返回null 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
// System.out.println(map.put("文章", "马伊琍"));
// System.out.println(map.put("文章", "姚笛"));
map.put("周杰伦", "昆凌");
map.put("刘恺威", "杨幂");
map.put("文章", "马伊琍");
map.put("黄晓明", "杨颖");

//删除功能
// map.clear();
// System.out.println("删除"+map.remove("黄晓明"));
// System.out.println("删除"+map.remove("黄晓波"));

//判断功能
// System.out.println("判断"+map.containsKey("黄晓明"));
// System.out.println("判断"+map.containsKey("黄小波"));
// System.out.println(map.isEmpty());
//长度功能
// System.out.println(map.size());

//获取功能
// System.out.println(map.get("周杰伦"));
// System.out.println(map.get("周杰"));
// System.out.println("-------------------------");
// Set<K> keySet():获取集合中所有键的集合
/* Set<String> set = map.keySet();
for(String s:set){
System.out.println(s);
}
System.out.println("-------------------------");*/
/* Collection<V> values():获取集合中所有值的集合*/
// Collection<String> son = map.values();
// for (String s:son) {
// System.out.println(s);
//
// }

/*Map集合的遍历 夫妻对
*思路:
* A 把所有的丈夫集中起来/获取所有的键
* B 遍历丈夫的集合,获取每一个丈夫/遍历键的集合,获取每一个键
* C 让丈夫找自己的妻子/根据键去找值*/

// Set<Map.Entry<K,V>> entrySet():???

//遍历 方式一
//获取所有的键
Set<String> set = map.keySet();
//遍历键的集合,获取每一个键
for(String key:set){
//根据键去找值
String value = map.get(key);
System.out.println(key+"------"+value);
}

//遍历方式二
/*Map-- 夫妻对
*思路:
* A 获取所有结婚证的集合/获取所有键值对的集合
* B 遍历结婚证的集合,得到每一个结婚证/遍历键值对对象的集合,得到每一个键值对对象
* C 根据结婚证获取丈夫和妻子/根据键值对对象获取键和值
*/
//获取每一个键值对对象,Entry为实体
//获取所有键值对的集合
Set<Map.Entry<String,String>> set2 = map.entrySet();
//遍历键值对对象的集合,得到每一个键值对对象
for(Map.Entry<String,String> me:set2){
//根据键值对对象获取键和值
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"-----"+value);
}

}
}
遍历的两种方式:
第一:根据键找值
        获取所有键的集合        遍历键的集合,获取到每一个键        根据键找值第二:根据键值对对象找键和值          获取所有键值对对象的集合          遍历键值对对象的集合,获取到每一个键值对对象          根据键值对对象找键和值LinkedHashMap 类中由哈希表保证键唯一,链表是有序的(有序 唯一)面试题:1 HashMap和Hashtable的区别?
                   Hashtable:线程安全,效率低,不允许null键和null值
                   HashMap:线程不安全,效率高,允许null键和null值

            2 Collection 和 Collections的区别?
                    Collection :是单列集合的顶层接口,有子接口List和Set

                    Collections:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Map