Map
双列集合(Map)
- 双列集合的体系
以键值对的形式存在的,如果需要存储成对存在的数据,那么就要使用双列集合---- Map 集合。
-------------| HashMap //底层也是依赖于哈希码去实现的,存储的位置是根据键的哈希码算出来的
-------------| TreeMap //底层也是使用了红黑树数据结构去实现的,特点:是会根据键的数据进行排序存储
-------------| Hashtable(了解)
- Map接口的方法:
增
put(K key, V value) 添加元素到map集合, 以前与 key 关联的值,如果没有针对 key 的映射关系,则返回 null。(
putAll(Map<? extends K,? extends V> m)
删
clear()
remove(Object key)
判断:
containsKey(Object key)
containsValue(Object value)
isEmpty()
获取
get(Object key)
size()
package cn.itcast.map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class Demo1 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put("霆锋", "张柏芝");
map.put("文章", "马伊琍");
map.put("汪峰", "章子怡");
map.put("奥巴马", "凤姐");
/*
Map<String,String> map2 = new HashMap<String, String>();
map2.put("习总", "彭丽媛");
map2.put("奥巴马", "凤姐");
添加
System.out.println("返回值:"+ map.put("文章", "姚笛"));
map.putAll(map2); //把map2的所有元素添加到map集合中。
删除
map.clear(); //清除map集合中所有
System.out.println("被删除的数据:"+ map.remove("奥巴马")); // 根据键删除一条数据, 返回是该键对应的值。
判断
System.out.println("判断是否存在指定的键:"+ map.containsKey("奥巴马"));
System.out.println("判断是否存在指定的值:"+ map.containsValue("凤姐"));
System.out.println("判断集合是否为空元素:"+ map.isEmpty());
获取
System.out.println("根据值获取对应的值:"+ map.get("霆锋"));
System.out.println("查看map集合的元素个数:"+ map.size());
*/
System.out.println("集合的元素:"+map);
}
}
双列集合没有迭代器,所以只能使用单列集合的迭代器,可是单列集合的迭代器都是只能返回一条数据,而map的返回值是以键值对的形式存在的,故此我们要将返回值进行相应的修改,使得单列集合的迭代器能迭代输出双列集合的值
遍历方式一: 可以使用keySet方法遍历。 keySet方法返回的集合只是包含了所有的键,没有包含值。
public class Demo2 {
public static void main(String[] args) {
Map<String,String> map = new HashMap<String, String>();
map.put("霆锋", "张柏芝");
map.put("文章", "马伊琍");
map.put("汪峰", "章子怡");
map.put("奥巴马", "凤姐");
Set<String> set = map.keySet(); //把map集合中所有key的数据存储到Set集合中返回。
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
System.out.println("键:"+ key+" 值:"+ map.get(key));
}
}
遍历的方式二:可以使用values方法进行遍历。 values方法返回的集合对象只是包含了map中的所有值,没有键的数据。
Collection<String> list = map.values(); // values 把map集合中的所有值存储到一个Collection集合返回
Iterator<String> it= list.iterator();
while(it.hasNext()){
String value = it.next();
System.out.println("值:"+ value);
}
遍历的方式三: 使用 entrySet方式遍历。 推荐使用。
Set<Map.Entry<String,String>> entrys = map.entrySet();
//Set<Entry<String,String>> entrys = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrys.iterator();
//Iterator<Entry<String,String>> it = entrys.iterator();
while(it.hasNext()){
Map.Entry<String,String> entry = it.next();
//Entry<String,String> entry = it.next();
System.out.println("键: "+ entry.getKey()+ " 值:" + entry.getValue());
}