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集合和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:是针对集合操作的工具类,有对集合进行排序和二分查找的方法
相关文章推荐
- JUC集合-05之 ConcurrentSkipListMap
- Java 集合深入理解(15):AbstractMap
- 02 深入了解java集合之List
- 深入了解Json转变为map的思想,附源代码2
- MAP,SET,LIST,等JAVA中集合解析(了解)
- 04 深入了解Set 集合
- 03 深入了解Java集合之增强for循环
- Java多线程系列--“JUC集合”05之 ConcurrentSkipListMap
- SpringMVC经典系列-05深入了解SpringMVC的核心原理---【LinusZhu】
- 深入了解java集合框架中的常用集合
- (转)map,set,list,等JAVA中集合解析(了解)
- map,set,list,等JAVA中集合解析(了解)
- 01 深入了解java集合之collection
- java的集合框架set 和map的深入理解
- 深入Map集合源码的几个实现
- 深入Java集合学习系列:ConcurrentSkipListMap实现原理
- Java 集合深入理解(14):Map 概述
- hadoop学习笔记之深入了解map-reduce
- 深入jdk源码关于map集合直接打印put方法返回值问题