集合框架(Collection)——Map和例题
目录
1.Map
2.案例
案例一
案例二
案例三
1.Map
1. Map
1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复
它没有继承Collection接口
1.2 遍历
1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
1.2.2 先取出保存所有Entry的Set,再遍历此Set即可 (重要点)2.HashMap与HashTable之间的区别
同步既排队 线程安全的 hashtable 键不可以为null,值也不能为null
异步 非安全的 hashmap 键可以为null,值也可以为null
2.案例
案例一
Demo01.java
package Ktdm;import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set;public class Demo01 {@SuppressWarnings("unlikely-arg-type")public static void main(String[] args) {//map集合的特点 无序,键值对,键不可以重复,值可以重复Map<String, Object> map=new HashMap<String, Object>();map.put("阿危", 250);map.put("果果", 520);map.put("菜菜", 521);//map集合的遍历方式 1.获取map集合中的所有key的set集合,再通过key获取value值Set<String> ks = map.keySet();for (String s : ks) { // System.out.println(s);//通过键获取对应的值Object value = map.get(s);System.out.println(s+"="+value);}//这一条数据把上一条覆盖了map.put("菜菜", 5211);map.put("果果", 521);System.out.println("----------------------");// Collection<Object> values = map.values(); // for (Object o : values) { // System.out.println(o); // // }for (String s : ks) { // System.out.println(s);//通过键获取对应的值Object value = map.get(s);System.out.println(s+"="+value);}System.out.println("----------------------");//map遍历方式 2.先取出保存所有键值对Entry的Set,再遍历此Set即可Set<Entry<String, Object>> entrySet = map.entrySet();for (Entry<String, Object> entry : entrySet) {System.out.println(entry);System.out.println(entry.getKey());System.out.println(entry.getValue());}}}
效果图:
案例二
Demo02.java
package Ktdm;import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import java.util.Map.Entry; import java.util.Set;public class Demo02 {public static void main(String[] args) {//map集合的特点 无序,键值对,键不可以重复,值可以重复Map<String, Object> map=new HashMap<String, Object>();Map<String, Object> map1=new Hashtable<String, Object>();//hashMap能以null为键,以null为值map.put("阿危", 250);map.put("果果", 520);map.put("菜菜", 521);map.put(null, "lx");//hashtable不能以null为键,不能以null为值 // map1.put("阿危", null); // map1.put("果果", 520); // map1.put("菜菜", 521); // map1.put(null, "lx");Set<Entry<String, Object>> entrySet = map.entrySet();for (Entry<String, Object> entry : entrySet) {System.out.println(entry);}}}
效果图:
案例三
Student.java
public class Student implements Serializable{/*** */private static final long serialVersionUID = 4682477983251791848L;private String name;private Integer source;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getSource() {return source;}public void setSource(Integer source) {this.source = source;}public Student() {// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "Student [name=" + name + ", source=" + source + "]";}public Student(String name, Integer source) {super();this.name = name;this.source = source;} }
Demo03.java
public static void main(String[] args) {Map<String, Map<String,List<Student>>> map = new HashMap<String, Map<String,List<Student>>>();//====================================================================List<Student> als = new ArrayList<Student>();als.add(new Student("张晓东",90));als.add(new Student("张晓西",75));List<Student> bls = new ArrayList<Student>();bls.add(new Student("张晓北",80));bls.add(new Student("张晓南",82));Map<String, List<Student>> amap = new HashMap<String, List<Student>>();amap.put("T110", als);amap.put("T111", bls);//====================================================================List<Student> cls = new ArrayList<Student>();cls.add(new Student("张三",90));cls.add(new Student("李四",100));List<Student> dls = new ArrayList<Student>();dls.add(new Student("王五",70));dls.add(new Student("小六",100));List<Student> els = new ArrayList<Student>();els.add(new Student("小八",70));els.add(new Student("小九",100));Map<String, List<Student>> bmap = new HashMap<String, List<Student>>();bmap.put("T206", cls);bmap.put("T222", dls);bmap.put("T208", els);//====================================================================List<Student> fls = new ArrayList<Student>();fls.add(new Student("可乐",60));fls.add(new Student("雪碧",50));List<Student> gls = new ArrayList<Student>();gls.add(new Student("哇哈哈",90));gls.add(new Student("老干妈",80));Map<String, List<Student>> cmap = new HashMap<String, List<Student>>();cmap.put("T230", fls);cmap.put("T231", gls);map.put("卓京初中部",amap);map.put("卓京高中部",bmap);map.put("卓京大学部",cmap);Set<String> keySet = map.keySet();for (String key : keySet) {Map<String, List<Student>> value = map.get(key);System.out.println(key);Set<String> keySet2 = value.keySet();for (String key2 : keySet2) {System.out.println("\t"+key2);List<Student> ls = value.get(key2);for (Student stu : ls) {System.out.println("\t\t"+stu.getName()+" "+stu.getSource());}}}
集合框架(Collection)——Map和例题相关推荐
- Java Review - 集合框架=Collection+Map
文章目录 概述 容器 = Collection + Map Collection Set TreeSet HashSet LinkedHashSet List ArrayList Vector Lin ...
- java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合
I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...
- 第19章 集合框架(3)-Map接口
第19章 集合框架(3)-Map接口 1.Map接口概述 Map是一种映射关系,那么什么是映射关系呢? 映射的数学解释 设A,B是两个非空集合,如果存在一个法则,使得对A中的每一个元素a,按法则f,在 ...
- Java 集合框架 : Collection、Map
1. Collection接口是Java集合框架的基本接口,所所有集合都继承该接口. 1.1 方法 : public interface Collection<E> extends Ite ...
- 集合框架Collection、Map查找表(Java SE第三阶段9)
目录 Collection List和Set 集合方法 集合持有对象的引用 集合间操作方法 Iterator迭代器 增强型for循环 泛型机制 List List(ArrayList和LinkedLi ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- Java集合查找Map,Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- JAVA基础第四章-集合框架Collection篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- D - JDK17源码阅读 - 集合框架 - Collection<E> 接口 - 集合框架核心接口
提前 关于抽象的描述并不完全代表具体的实现,但是具体实现不会脱离抽象描述 关于这个接口,官方给的描述太多太多,不用看的太仔细,随意看看就好 集合层次结构中的根接口. 一个集合代表一组对象,称为它的元素 ...
最新文章
- LeetCode简单题之解码字母到整数映射
- 开发日记-20190405
- csrutil是什么_经常在程序里见到 Util ,想知道它一般是指什么意思?
- 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动
- mysql优化学习笔记
- java8 streams_Java 8 Streams API:对流进行分组和分区
- VMware Workstation 网络设置解释三种
- 都是程序员,凭什么他工资比我高,下班比我早?
- Linux创建与删除用户
- Pandas速查手册中文版API
- 多因素cox回归结果解释 第二十八讲 R语言-Cox比例风险模型1 - 知乎 (zhihu.com)
- linux安装project lemon测评机
- scp 远程拷贝文件
- debian 9 配置ati驱动
- jmeter安装成功后打不开,提示:Cause: CannotResolveClassException: com.blazemeter.jmeter.threads.concurrency.Conc
- 猜数字游戏(C语言生成随机数)
- 基于Python的企业编码生成系统
- 特斯拉、蔚来、小鹏三款主流智能驾驶产品测评
- 计算机网络一本通电子书,2019年全国计算机等级考试一本通 三级网络技术
- 亚马逊云科技-游戏孵化营第二课
热门文章
- HTML中使背景图片自适应浏览器大小
- 字节 找出最近时间(回溯) C++ 2021-07-17
- vue--子传父、父传子
- vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: ‘xxx‘. This may cause an update err
- 音视频入门系列-服务器篇(nginx-rtmp 的部署)
- Phalanx HDU 【2859】
- FVCOM离线拉格朗日配置
- 港科百创|【未磁科技】勇夺百万大奖,2021年度总决赛圆满收官!香港科大-越秀集团百万奖金国际创业大赛年度总决赛成功举办!...
- 大数据时代下对马克思主义的一些探讨
- chinacache解决方案——静态内容加速