Map集合:
该集合存储键值对。一对一对往里存,而且要保证键的唯一性。
键:就是存的值的编号
值:就是要存放的数据
1.添加
put(K key, V value);
添加元素,如果出现添加时,相同的键,那么后添加的值会覆盖原有键对应的值,并put方法会返回被覆盖的值。
2.删除
clear();
remove(Object key)
3.判断
boolean containsKey(Object key)
boolean containsValue(Object value)
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
Map:
|--Hashtable:底层是哈希表数据结构,不可以存入null键和nul值,该集合线程是同步的。效率低。
|--HashMap:底层是哈希表数据结构,并允许使用null值和null键,该集合线程是不同步的。效率高。
|--TreeMap:底层是二叉树数据结构,线程不同步,可以用于Map集合中的键进行排序。
1.keySet:将Map中的所有键存入到Set集合。因为Set具备迭代器。所有的迭代方式取出的所有键,在根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转换成set集合。在通过迭代器取出。
2.Set <> entrySet:将Map集合中的映射关系存入到了set集合中,而这个关系数据类型就是Map.Entry。
Map.Entry其实Entry也是一个接口,它是Map接口中的一个内部类
Map集合扩展知识:
该集合存储键值对。一对一对往里存,而且要保证键的唯一性。
键:就是存的值的编号
值:就是要存放的数据
1.添加
put(K key, V value);
添加元素,如果出现添加时,相同的键,那么后添加的值会覆盖原有键对应的值,并put方法会返回被覆盖的值。
2.删除
clear();
remove(Object key)
3.判断
boolean containsKey(Object key)
boolean containsValue(Object value)
4.获取
get(Object key)
size()
values()
entrySet()
keySet()
Map:
|--Hashtable:底层是哈希表数据结构,不可以存入null键和nul值,该集合线程是同步的。效率低。
|--HashMap:底层是哈希表数据结构,并允许使用null值和null键,该集合线程是不同步的。效率高。
|--TreeMap:底层是二叉树数据结构,线程不同步,可以用于Map集合中的键进行排序。
和Set很像,其实Set底层就是使用了Map集合。
1.keySet:将Map中的所有键存入到Set集合。因为Set具备迭代器。所有的迭代方式取出的所有键,在根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转换成set集合。在通过迭代器取出。
2.Set <> entrySet:将Map集合中的映射关系存入到了set集合中,而这个关系数据类型就是Map.Entry。
Map.Entry其实Entry也是一个接口,它是Map接口中的一个内部类
Map集合扩展知识:
map集合被使用是因为具备映射关系。
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}