Interface Map<K,V> key 键 value 值
双边队列
存的是键值对的数据
001===>瑞强
002====》子豪
将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值。
这个接口取代了`Dictionary`类,它是一个完全抽象的类而不是接口。
Map接口下面 已经封装好实现类
--|HashMap
--|TreeMap
Map接口下面的方法
增:
V put(K key, V value)
将指定的值与该映射中的指定键相关联(可选操作)。
void putAll(Map<? extends K,? extends V> m)
将指定地图的所有映射复制到此映射(可选操作)。
删:
V remove(K key); 通过键删除指定的值 返回值是被删除的值
改:
V put(K key, V value) 当键没有的话,就是添加,没有的话,就是覆盖
查:
int size(); 查看集合中的元素的个数
boolean isEmpty(); 判断集合是否为空
boolean containsKey(Obejct Key); 判断集合中是否包含这个键
boolean containsValue(Obejct value); 判断集合中是否包含这个值
重要的方法:
V get(K key); 通过键获取值
Set<K> keySet() 获取所有的键存到set集合中
Collection<V> values() 获取所有集合中的值
Set<Map.Entry<K,V>> entrySet() 将键值对 的map的实体存到set集合中
package com.qf.b_map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("001", "老邢");//ctrl + d
map.put("002", "骚磊");
map.put("003", "狗蛋");
System.out.println(map);
//{001=老邢, 002=骚磊, 003=狗蛋}
//001=老邢 就叫键值对
Map<String, String> map1 = new HashMap<>();
map1.put("004", "恩东");//ctrl + d
map1.put("005", "老万");
map1.put("006", "阳仔");
System.out.println(map1);
map.putAll(map1);
System.out.println(map);//{001=老邢, 002=骚磊, 003=狗蛋, 004=恩东, 005=老万, 006=阳仔}
// Map<Integer, String> map2 = new HashMap<>();
// map2.put(4, "恩东");//ctrl + d
// map2.put(5, "老万");
// map.putAll(map2);
System.out.println(map.remove("003"));
System.out.println(map);//{001=老邢, 002=骚磊, 004=恩东, 005=老万, 006=阳仔}
System.out.println(map.put("005", "老实巴交的老万"));
System.out.println(map);//{001=老邢, 002=骚磊, 004=恩东, 005=老实巴交的老万, 006=阳仔}
System.out.println(map.size());//5
System.out.println(map.isEmpty());//false
System.out.println(map.containsKey("003"));//false
System.out.println(map.containsKey("004"));//true
System.out.println(map.containsValue("老邢"));//true
System.out.println(map.get("001"));//老邢
Set<String> strings = map.keySet();
//返回值是nset 键是不可重复的 所以将键存到set集合中
System.out.println(strings);
Collection<String> values = map.values();
System.out.println(values);
Set<Map.Entry<String, String>> entries = map.entrySet();
System.out.println(entries);
//使用增强for循环 iter快捷键
for (Map.Entry<String, String> entry : entries) {
System.out.println(entry);//001=老邢 键值对对象
System.out.println(entry.getKey());//获取的键
System.out.println(entry.getValue());//获取值
System.out.println("=====");
}
}
}
Map集合中的value值 放的是自定一定的对象
package com.qf.b_map;
import java.util.HashMap;
import java.util.Map;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Demo2 {
public static void main(String[] args) {
Map<Integer, Person> map = new HashMap<>();
map.put(1, new Person("侯丹", 23));
map.put(2, new Person("黑八", 25));
map.put(3, new Person("邢美人", 21));
System.out.println(map);
System.out.println(map.get(3).getName());
}
}
package com.qf.b_map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo3 {
public static void main(String[] args) {
Map<Integer, List<String>> map = new HashMap<>();
List<String> list = new ArrayList<>();
list.add("旺财");
list.add("狗蛋");
list.add("常威");
map.put(1,list);
List<String> list1 = new ArrayList<>();
list1.add("来福");
list1.add("坤坤");
list1.add("存爱");
map.put(2, list1);
System.out.println(map);
}
}