类一:
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* Map集合 特点: 双列集合,元素由键值对构成 key(键)----value(值) 注意: 键不可以重复,值可以重复 应用: Map<T1,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集合中添加三个学生对象,然后打印 //1. 创建结婚对象 Map<Integer,Student> map = new HashMap<>(); //2.创建元素对象 Student student1 = new Student("张3",12); Student student2 = new Student("张4",13); Student student3 = new Student("张3",12); //3.将元素对象添加到集合中 //测试put()方法 /*Student s1 = map.put(1, student1); System.out.println("s1: " + s1); Student s2 = map.put(1, student2); System.out.println("s2: " + s2);*/ //键不可以重复,否则后面的赋值会覆盖掉前面的值 //打印集合 map.put(1,student1); map.put(2,student2); map.put(3,student3); System.out.println("map: " + map); //值可以重复 //测试get()方法 //根据键获取“张4”的值 Student s3 = map.get(2); System.out.println("key: " + 2 + " ,value: " + s3); System.out.println("________________________________________________"); //4.遍历集合 //4.1.获取所有键的集合 keySet() Set<Integer> keys = map.keySet(); //4.2.遍历所有的键,获取到每一个键 迭代器,增强for Iterator<Integer> it = keys.iterator(); while (it.hasNext()) { //如果迭代器中有数据就获取 Integer key = it.next(); //4.3.根据键获取指定的值 get() Student value = map.get(key); System.out.println("key: " + key + " , value: " + value); } System.out.println("________________________________________________"); //通过增强for实现 for (Integer key : keys) {//获取所有的键 //4.3.根据键获取指定的值 get() Student value = map.get(key); System.out.println("key: " + key + " , value: " + value); } } }
类二:
package Demo27_Map集合; import java.util.Objects; //学生类 public class Student { private String name; private int age; public Student() { } public Student(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 "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 age == student.age && Objects.equals(name, student.name); } @Override public int hashCode() { return Objects.hash(name, age); } }
作者本人所有随笔仅为学习笔记,仅供参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)