接口Map<K,V>
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)
isEmpty()
4,获取
get(Object key)
size()
values()
entrySet()
keySet()
Map
—Hashtable:底层是哈希数据结构,不可以存入null键null值,该集合是线程同步的。jdk1.0,效率低
—HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步,jdk1.2效率高
—TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map结合中的键排序
和Set很像,其实Set底层就是使用了Map集合。
Map共性方法
public class Demo {
public static void sop(Object object){
System.out.println(object);
}
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", null);
map.put("04", "zhangsan4");
sop("containsKey = "+map.containsKey("01"));
sop("remove = "+map.remove("02"));
//可以通过get方法的返回值来判断一个键是否存在,通过返回null来判断
sop("get = "+map.get("03"));
//获取map集合中所用的集合,是无序的
Collection<String> collection = map.values();
sop(collection);
}
打印结果:
containsKey = true
remove = zhangsan2
get = null
[zhangsan4, zhangsan1, null]
Map-keySet
Set keySet:将Map中所有的键存入到Set集合,因为Set具备迭代器。所以可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
Map 集合的取出原理:将map集合转成Set集合,在通过迭代器取出。
public class Demo {
public static void sop(Object object){
System.out.println(object);
}
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("01", "zhangsan1");
map.put("02", "zhangsan2");
map.put("03", "zhangsan3");
map.put("04", "zhangsan4");
//先获取Map集合的所有键的Set集合,keySet()
Set<String> keyset = map.keySet();
//有了Set集合,就可以获取其迭代器
Iterator<String> iterator = keyset.iterator();
while (iterator.hasNext()) {
String string = (String) iterator.next();
sop("key = "+string+", value = "+ map.get(string));
}
}
打印结果:
key = 04, value = zhangsan4
key = 01, value = zhangsan1
key = 02, value = zhangsan2
key = 03, value = zhangsan3
keyset原理图:
Map-entrySet
Set<Map.Entry<k,v> entrySet: 将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是Map.Entry
public class Demo {
public static void sop(Object object){
System.out.println(object);
}
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("01", "zhangsan1");
map.put("02", "zhangsan2");
map.put("03", "zhangsan3");
map.put("04", "zhangsan4");
Set<Map.Entry<String, String>> entries= map