/*
Map集合:该集合存储键值对,一对一对往里存,要保证键的唯一性。
1,添加。
put(K key, V value);
putAll(Map<? extends K, ? extends V> m);
2,删除。
clear();
remove(Object key);
3,判断
containsValue(Object value);
containsKey(Object key);
4,获取
get(Object key)
size();
values();
entrySet();//重要
keySet();//重要
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null,该集合是线程同步的。效率低
|--HashMap:底层是哈希表数据结构,并允许使用null键和null值,该集合是线程不同步。效率高
|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给map集合中的键排序
和Set很像。其实Set底层就是使用了Map集合。
*/
import java.util.*;
class MapDemo
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
//添加元素,添加元素,如果出现添加时,出现相同
//的键。那么后添加的值会覆盖原有的值,并且put方
//法会返回被覆盖的值
map.put("01","zhangsan1");
map.put("02","zhangsan2");
map.put("03","zhangsan3");
System.out.println("containsKey: "+map.containsKey("022"));
//System.out.println("remove: "+map.remove("02"));
System.out.println("get: "+map.get("02"));
map.put("04",null);
System.out.println("get: "+map.get("04"));
//可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断。
//获取map集合中所有的值
Collection<String> coll = map.values();
System.out.println(coll);
System.out.println(map);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
map集合的两种取出方式
1,Set<k> keySet():将map中所有的键存入到Set集合。因为Set集合具备迭代器,
所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合,再通过迭代器取出。
2,Set<Map.Entry<k,v>> entrySet():将map集合中的映射关系存入到了Set集合,
而这个关系的数据类型就是Map.Entry
*/
import java.util.*;
class MapDemo2
{
public static void main(String[] args)
{
Map<String,String> map = new HashMap<String,String>();
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("01","zhangsan1");
map.put("04","zhangsan4");
//将Map集合中的映射关系取出,存入到Set集合中。
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+"="+value);
}
/*
//先获取map集合的所有键的Set集合,keySet();
Set<String> keySet = map.keySet();
//有了Set集合,就可以获取其迭代器
Iterator<String> it = keySet.iterator();
while(it.hasNext())
{
String key = it.next();
//有了键可以通过map集合的get方法获取其对应的值。
String value = map.get(key);
System.out.println("key: "+key+", value: "+value);
}
*/
}
}
/*
Map.Entry 其实Entry也是一个接口,其实Map接口中的一个内部接口
interface Map
{
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
}
}
class HashMap implements Map
{
class Hash implements Map.Entry
{
public abstract Object getKey(){}
public abstract Object getValue(){}
}
}
*/
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
个人总结:掌握Map集合的基本方法,Map集合存放的是键值对,注意HashMap和TreeMap之间的区别,
Hashtable已经过时,注意Map集合的两种取出方式,keySet是先获取键,通过对键的迭代获取键对应的
值,entrySet是先获取Map集合中键和值之间的对应关系,然后再取出键和值。