Map集合:该集合存储键值对。一对一对往里存,而且要保证键的唯一性(一个键最多只能映射到一个值)。
1.添加
put(K key,V value)
putAll(Map extends K,? extends V>m)
2.删除
clear()
remove(Object key)
3.判断
containsKey(Object key)
containsValue(Object value)
isEmpty()
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null作为键或值。该集合是线程同步的。jdk1.0。效率低
|--HashMap:底层是哈希表数据结构。并允许使用null作为键或值。该集合是不同步的。jdk1.2。效率高
|--TreeMap:底层是二叉树数据结构。线程不同步,可以用于给Map集合中的键进行排序
其实Set底层就是使用了Map集合。
Map的共性方法:
import java.util.*;
class MapDemo1{
public static void main(String[] args){
Map map = new HashMap();
//添加元素
System.out.println("put:"+map.put("01","zhangsan1"));//put方法是有返回值的
System.out.println("put:"+map.put("01","wangwu"));
//当存入相同键的时候(“01”),新的值会替换老的值,而且put方法会把老的值返回来
map.put("02","zhangsan2");
map.put("03","zhangsan3");
System.out.println("containsKey"+map.containsKey("02"));
System.out.println("remove"+map.remove("02"));
//删除会返回该键所对应的值:zhangsan2
System.out.println("get"+map.get("02"));
//获取也会返回该键所对应的值,若不存在,和删除一样,都会返回null
map.put(null,"haha");
System.out.println("get:"+map.get(null));
//HashMap集合是可以让null作为键值存在的,但是开发中很少见
map.put("04",null);
System.out.println("get:"+map.get("04"));
//和上一句代码一样,null也可以作为键值存在,但更不常见
//获取Map集合中所有的值
Collection coll = map.values();
System.out.println(coll);
System.out.println(map);
}
}
重点说一下Map集合的两种取出方式:
1Set
import java.util.*;
class MapDemo2{
public static void main(String[] args){
Map map = new HashMap();
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("01","zhangsan1");
map.put("04","zhangsan4");
//先获取Map集合中的所有键的Set集合,keySet();
Set keySet = map.keySet();
//有了Set集合,就可以获取其迭代器
Iterator 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集合的取出原理:将Map集合转成Set集合,再通过迭代器取出。
2.Set
import java.util.*;
class MapDemo2{
public static void main(String[] args){
Map map = new HashMap();
map.put("02","zhangsan2");
map.put("03","zhangsan3");
map.put("01","zhangsan1");
map.put("04","zhangsan4");
//将Map集合中的映射关系取出,存入到Set集合中
Set> entrySet = map.entrySet();
Iterator> it = entrySet.iterator();
while(it.hasNext()){
Map.Entry me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);
}
/*
//先获取Map集合中的所有键的Set集合,keySet();
Set keySet = map.keySet();
//有了Set集合,就可以获取其迭代器
Iterator 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接口中的一个内部接口