Map集合的特点
特点:双列集合,元素由键值对(Entry)构成:key(键)-- value(值)
注意
键(key)不可以重复,值(value)可以重复应用:<br /> Map<Ti,T2>map = new HashMap<>():<br /> 解释: T1:表示键的数据类型.T2:表示值的数据类型
成员方法
V put(K key,V value):添加元素(键值对的形式). 元素第一次添加,返回null,重复添加,会用新值覆盖旧值,并返回旧值<br /> v get(Object key) ;根据键获取其对应的值<br /> Set<K> keySet() :获取所有键的集合.
遍历步骤
1.获取所有的键的集合。 keySet()<br /> 2.遍历所有的键,获取每一个键。 迭代器或增强for<br /> 3.根据键,获取指定的值 get()
案例
public class MapDemo {
public static void main(String[] args) {
//需求:往map集合中添加3个学生对象,然后打印
//创建集合对象
//键:表示学生编号 值:表示学生对象
Map<Integer,xue> map = new HashMap<>();
//创建元素对象
xue s1 = new xue("张三",20);
xue s2 = new xue("李四",30);
xue s3 = new xue("王五",18);
xue s4 = new xue("王五",18);
//将元素对象添加到集合对象中
/* xue xue1 = map.put(1, s1);
System.out.println("xue1:"+xue1);
xue xue2 = map.put(1, s2);
System.out.println("xue2:"+xue2);*/
//实际开发中用
map.put(1,s1);
map.put(2,s2);
map.put(3,s3);
map.put(4,s4);
//根据键获取值
xue xue = map.get(2);
System.out.println("key:"+2+",value:"+xue);
//打印集合
System.out.println(map);
System.out.println("----------------");
//遍历集合
/*// 1.获取所有的键的集合。 keySet()
Set<Integer> keys = map.keySet();
// 2.遍历所有的键,获取每一个键。 迭代器或增强for
//获取迭代器对象
Iterator<Integer> it = keys.iterator();
while (it.hasNext()){
//如果迭代器中有数据,就获取
Integer key = it.next();
// 根据键,获取值
Note.xue xue1 = map.get(key);
System.out.println("key:"+key+"...value"+xue1);
}*/
//通过增强for实现
Set<Integer> keys = map.keySet();
for (Integer key : keys) {
Note.xue value = map.get(key);
System.out.println("key:"+key+"...value:"+value);
}
}
}
//学生类
class xue{
private String name;
private int age;
public xue() {
}
public xue(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 "xue{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
xue xue = (xue) o;
return age == xue.age && Objects.equals(name, xue.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}