1. Map集合
1.1 Map集合概述和特点
A:Map接口概述 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
1.2 Map集合的功能概述
A:Map集合的功能概述 a:添加功能 V put(K key,V value):添加元素。这个其实还有另一个功能?替换 如果键是第一次存储,就直接存储元素,返回null 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值 b:删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回 c:判断功能 boolean containsKey(Object key):判断集合是否包含指定的键 boolean containsValue(Object value):判断集合是否包含指定的值 boolean isEmpty():判断集合是否为空 d:获取功能 Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合 V get(Object key):根据键获取值 Set<K> keySet():获取集合中所有键的集合 Collection<V> values():获取集合中所有值的集合 e:长度功能 int size():返回集合中的键值对的对数
1.3 Map集合的遍历之键找值
package Demo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
/**
* @Author: King
* @Description:人类的伟大是勇气的伟大,人类的赞歌是勇气的赞歌
* @Creat: 2021-12-02-16:56
*/
public class MyTest2 {
public static void main(String[] args) {
//所有的双列集合,他的数据结构,只跟键有关,跟值没有关系。
//HashMap底层数据结构是哈希表。他就能够保证键的唯一性。
HashMap<Integer, String> hash = new HashMap<>();
hash.put(1, "关羽");
hash.put(1, "张飞");
hash.put(2, "张飞");
hash.put(3, "赵云");
hash.put(4, "马超");
hash.put(5, "黄忠");
//遍历集合
//1. keySet方法
Set<Integer> integers = hash.keySet();
for (int i = 0; i < integers.size(); i++) {
System.out.println(i+"=="+hash.get(i));
}
System.out.println("==========分隔符==========");
//2. entrySet方法
for (Map.Entry<Integer, String> hashMap : hash.entrySet()) {
System.out.println(hashMap.getKey()+"=="+hashMap.getValue());
}
System.out.println("==========分隔符==========");
//forEach遍历
hash.forEach(new BiConsumer<Integer, String>() {
@Override
public void accept(Integer key, String value) {
System.out.println(key+"=="+value);
}
});
}
}
运行结果
1==张飞 2==张飞 3==赵云 4==马超 5==黄忠
2. HashMap存储自定义类元素
自定义一个Student类
package Demo;
import java.util.Objects;
/**
* @Author: King
* @Description:人类的伟大是勇气的伟大,人类的赞歌是勇气的赞歌
* @Creat: 2021-12-02-13:53
*/
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAg