* Map:
* 实现学号和姓名对应关系的存储
* 为了体现有对应关系的数据,我们使用以前所学的内容是可以实现的但是不方便
* 但是Java为我们提供了一种有对应关系的的集合Map
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。
* public interface Map<K,V>
* 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
* Map和Collection的区别?
* Map:是一个双列集合,常用于处理对应关系的数据(数据对无序),keys是不可以重复,我们也称之为夫妻对集合
* Collection:是单列集合,Collection下面有不同的子体系,有的允许重复又索引,有的不允许重复而且无序,也称之为单身汉集合
* void clear()
* 从此映射中移除所有映射关系(可选操作)。
*
* V remove(Object key)
* 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)如果没有删除成功返回null。
* Set<K> keySet()
* 返回此映射中包含的键的 Set 视图。
* 映射功能
* V put(K key, V value) :将key映射到value的功能,如果可以存在,则覆盖value,并将原来的value返回
* 将指定的值与此映射中的指定键关联(可选操作)。
* 判断功能
* boolean containsKey(Object key)
* 如果此映射包含指定键的映射关系,则返回 true。
* boolean containsValue(Object value)
* 如果此映射将一个或多个键映射到指定值,则返回 true。
* boolean isEmpty()
* 如果此映射未包含键-值映射关系,则返回 true
* int size()
* 返回此映射中的键-值映射关系数。
* V get(Object key)
* 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
public class MapDemo {
public static void main(String[] args) {
//创建Map对象
Map<String, String> map = new HashMap<String, String>();
System.out.println(map.put("sdsfdsfs01", "网二"));
System.out.println(map.put("sdsfdsfs02", "李三"));
System.out.println(map.put("sdsfdsfs02", "王五"));
/* 判断功能
* boolean containsKey(Object key)
* 如果此映射包含指定键的映射关系,则返回 true。
* boolean containsValue(Object value)
* 如果此映射将一个或多个键映射到指定值,则返回 true。
* boolean isEmpty()
* 如果此映射未包含键-值映射关系,则返回 true
*/
//map.clear();
//System.out.println(map.remove("sdsfdsfs02"));
System.out.println(map.containsKey("sdsfdsfs01"));
System.out.println(map.containsValue("李三"));
System.out.println(map.isEmpty());
System.out.println(map.size());
System.out.println(map.get("sdsfdsfs01"));
System.out.println(map);
}
}
分别获取键——值得方法
* Set<K> keySet()
* 返回此映射中包含的键的 Set 视图。
* Collection<V> values()
* 返回此映射中包含的值的 Collection 视图。
package com.myMap;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
* Set<K> keySet()
* 返回此映射中包含的键的 Set 视图。
* Collection<V> values()
* 返回此映射中包含的值的 Collection 视图。
*/
public class MapDemo02 {
public static void main(String[] args) {
//创建mAP对象
Map<String, String> map = new HashMap<String, String>();
map.put("0001", "张三");
map.put("0002", "李四");
map.put("0003", "王二");
map.put("0004", "麻五");
method(map);
method02(map);
}
private static void method02(Map<String, String> map) {
Collection<String> vals = map.values();
for(String val:vals) {
System.out.println(val);
}
}
private static void method(Map<String, String> map) {
System.out.println(map);
Set<String> keys = map.keySet();
System.out.println(keys);
for (String key:keys) {
System.out.println(key);
}
}
}
Map遍历的二种方式
第一种:首先通过keySet()方法获取到Map集合的key值
然后根据key值使用Map集合中get(K)方法循环获取K对应的V值
package com.myMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
* Map的遍历方式
* 第一种:首先通过keySet()方法获取到Map集合的key值
* 然后根据key值使用Map集合中get(K)方法循环获取K对应的V值
*/
public class MapDemo03 {
public static void main(String[] args) {
// 创建mAP对象
Map<String, String> map = new HashMap<String, String>();
// 添加映射关系
map.put("0001", "张三");
map.put("0002", "李四");
map.put("0003", "王二");
map.put("0004", "麻五");
// 遍历Map集合对象
Set<String> keys = map.keySet();
// 遍历Key
for(String key : keys) {
String value = map.get(key);
System.out.println("编号:"+key+"---------"+"值:"+value);
}
}
}
第二种:Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。
package com.myMap;
/*
* Map的遍历方式
* 第二种:
* Set<Map.Entry<K,V>> entrySet()
* 返回此映射中包含的映射关系的 Set 视图。
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapDemo04 {
public static void main(String[] args) {
// 创建mAP对象
Map<String, String> map = new HashMap<String, String>();
// 添加映射关系
map.put("0001", "张三");
map.put("0002", "李四");
map.put("0003", "王二");
map.put("0004", "麻五");
// 获取所有的键值对对像集合
Set<Entry<String, String>> entrys = map.entrySet();
System.out.println(entrys);
// 遍历键值对对象集合
for(Map.Entry<String, String> entry :entrys ) {
//获取到每一个键值对对象
//通过键值对对象获取到K和V值
String K = entry.getKey();
String V = entry.getValue();
System.out.println("K:"+K+"-------"+"V:"+V);
}
}
}