package util;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
*
* @author yjmao
* @deprecated HashMap的常用方法小结(继承于Map<K,V>接口)
* @version V1.0.0
* @see:基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
* (除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
*/
public class LearnHashMap {
public static void main(String[] args){
//easyMethod();
//hardMethod();
}
public static void hardMethod(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "maoyuanjun");
map.put("sex", "man");
map.put("age", "24");
//如果key键相等,则里面的value值显示最后设置的值,也就是说后面设置的值会覆盖前面设置的值
map.put("name", "zoulingpei");
System.err.println(map.get("name"));
Map<String,Object> mapAll = new HashMap<String,Object>();
mapAll.putAll(map);
mapAll.put("age", "22");
System.err.println("mapAll所对应的集合个数:" + mapAll.size());
System.err.println("age所对应的值:" + mapAll.get("age"));
System.err.print("mapAll所包含的键:");
//keySet():返回此映射中所包含的键的 Set 视图。返回 Set<K>
Set<String> keyset = mapAll.keySet();
Iterator<String> iterator = keyset.iterator();
while(iterator.hasNext()){
String setKeyValue = iterator.next();
System.err.print(setKeyValue + ",");
}
System.err.print("\nmapAll所包含的值:");
//values():返回此映射所包含的值的 Collection 视图。返回Collection<V>
Collection<Object> c = mapAll.values();
Iterator<Object> iteratorV = c.iterator();
while(iteratorV.hasNext()){
String setValueValue = (String) iteratorV.next();
System.err.print(setValueValue + ",");
}
System.err.print("\nmapAll所包含的键值对:\n");
//entrySet():返回此映射所包含的映射关系的 Set 视图。返回 Set<Map.Entry<K,V>>
Set<Entry<String,Object>> en = mapAll.entrySet();
Iterator<Entry<String,Object>> it = en.iterator();
while(it.hasNext()){
Entry<String,Object> entry = it.next();
String key = entry.getKey();
String value = (String) entry.getValue();
System.err.println(key + ":" + value);
}
}
public static void easyMethod(){
Map<String,Object> map = new HashMap<String,Object>();
//isEmpty():如果此映射不包含键-值映射关系,则返回 true。
boolean isEmpty = map.isEmpty();
System.err.println("map是否为空:" + isEmpty);
//put(K key,V value):K表示指定值将要关联的键;V表示指定键将要关联的值
map.put("name", "maoyuanjun");
map.put("sex", "man");
map.put("age", "24");
//size():返回此映射中的键-值映射关系数。
int size = map.size();
System.err.println("map中的键值对数:" + size);
//containsKey(Object key):如果此映射包含对于指定键的映射关系,则返回 true。
boolean conT = map.containsKey("name");
System.err.println("map是否包含name键:" + conT);
boolean conF = map.containsKey("zou");
System.err.println("map是否包含zou键:" + conF);
//containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。
boolean vonT = map.containsValue("maoyuanjun");
System.err.println("是否包含maoyuanjun值:" + vonT);
boolean vonF = map.containsValue("zoulingpei");
System.err.println("是否包含zoulingpei值:" + vonF);
//get(Object key):返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
String value = (String) map.get("name");
System.err.println("name键所对应的值:" + value);
//remove(Object key):从此映射中移除指定键的映射关系(如果存在)。
//返回与 key 关联的旧值;如果 key 没有任何映射关系,则返回 null
String rbRemove = (String) map.remove("name");
System.err.println("移除的键name所对应的值:" + rbRemove);
System.err.println("是否包含name键:" + map.containsKey("name"));
//clear():清空map
map.clear();
boolean empty = map.isEmpty();
System.err.println("map是否为空:" + empty);
}
}