五、Map集合的特点和应用
5.1、Map集合的特点特点:
双列集合,元素由键值对(Entry)构成:key -- value
key不可以重复,value可以重复
5.2、应用:
Map<T1, T2> map = new HashMap<>();
案例:Map集合的简单使用
需求:向Map集合中添加三个元素,并遍历打印
### 5.3、分析:
A. 向map集合中添加元素的方法为:put)
B. 遍历集合的方式:获取所有的key: keySet()遍历keySet,通过key获取value: get)
C. 遍历keySet的方法: iterator()
### 5.4、步骤:
1.创建集合对象:Map<Integer, Student> map = new HashMap<>();
2.分别创建三个Student对象
3.使用put方法将Student对象添加到集合中
4.获取所有的key,并使用选代器遍历
5.通过key分别获取对应的value并打印
5.5、创建学生实体类
import java.util.Objects;
public class Student {
private String name;
private Integer age;
public Student() {}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals(name, student.name) && Objects.equals(age, student.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
5.6、创建测试类
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
Map集合的特点特点:
双列集合,元素由键值对(Entry)构成:
key (键) - value (值)
注意:
健(key)不可以重复,值(value)可以重复
应用:
Map<TI, T2) map = new HashMap<>();
解释:
T1:表示键的数据类型
T2:表示值的数据类形
*/
/*
成员方法:
V put (K key, V value): 添加元素(健值对的形式),
元素第一次添加,返回null,
重复添加,会用新值覆盖旧值,并返回旧值.
V get (Object key): 根据键获取其对应的值
Set(K) keySet (): 获取所有键的集合
遍历步骤:
1.获取所有键的集合 keySet()
2.遍历所有的键,获取到每一个键 迭代器,增强for.
3.根据建,获取指定的值. get();
*/
public class Test {
public static void main(String[] args) {
//创建集合对象
//键:学生的编号, 值:具体的学生的对象
Map<Integer,Student> map = new HashMap<>();
//创建元素
Student s1 = new Student("张三",25);
Student s2 = new Student("李四",28);
Student s3 = new Student("张三",25);
//将元素添加到集合中
map.put(1,s1);
map.put(2,s2);
map.put(3,s3);
}
}
5.7、==直接打印==
//根据建,获取值
Student stu = map.get(3);
System.out.println(stu);
//直接打印集合
System.out.println(map);
5.8、 ==增强for循环==
//增强for循环
//获取到所有的键
Set<Integer> keys1 = map.keySet();
for (Integer key:keys1){
//keys1就是双列集合中的每一个键
System.out.println(map.get(key));
}
5.9、==迭代器遍历集合==
//遍历集合
// 1.获取所有键的集合 keySet() 具有唯一性
Set<Integer> keys = map.keySet();
// 2.遍历所有的键,获取到每一个键 迭代器,增强for.
// 获取迭代器对象
Iterator<Integer> iterator = keys.iterator();
while (iterator.hasNext()){
Integer key = iterator.next();
System.out.println(map.get(key));
}