⚔疯狂输出⚔ Collection 之 Map 子类
来源:互联网 发布:英雄无敌5 mac版 编辑:程序博客网 时间:2024/06/02 04:50
Map 数据保存的形态 以键值形态成对存储 一一对应 分别 是 key 和value 键是唯一的不可重复
//接下来我们用Map写一小段程序
Map<String,Integer> map = new Map<>();//保存键值对int num = map.put("小明",18);int num1 = map.put("小方",20;int num2 = map.put("小刚",23);//打印System.out.println(num);System.out.println(num1);System.out.println(num1);
结果
nullnullnull
下面我们写一个和上面一样的程序有一点不同的是我们创建两个 小明
Map<String,Integer> map = new Map<>();//保存键值对int num = map.put("小明",18);int num1 = map.put("小方",20;int num2 = map.put("小刚",23);int num3 = map.put("小明",33);//打印System.out.println(num);System.out.println(num1);System.out.println(num2);System.out.println(num3);
结果
nullnullnull33
为什么 会有个33了呢 而不是null了呢?原因是什么呢?
原因是因为地址的原因 我们每一次 new一个元素都会保存他的地址 因为出现了两个小明但是他们两个不是同一个元素
但是键值是相同的 键不会重复保存 但是后面的元素会覆盖前面那个元素
HashMap 和HashSet 长的这么像 是不是有什么关系呢?
HashSet底层的实现是依赖 Hashmap的
再向HashSet中添加的 值 相当于 在 map中 添加到key的位置
为什么 HashSet 和HashMap底层要使用 HashMap来实现呢?
因为他们底层都是用哈希算法来写的 所以使用一套就可以了
利用我们面向对象封装的特点来实现的。
HashSet系统里面写的方法
HashMap系统里面写的方法
HashMap和TreeSet
HashSet 去重功能 都是说的这个键(key) 重写 hashCode();和equals();
TreeSet 排序功能(去重功能) 都是说的这个键(key) 重写 hashCode();和equals();
去重 和排序 相当于是对map键去操作。
系统里面HashMap重写 hashCode和equals
hashCode
equals方法
系统里面TreeSet重写 hashCode和equals
接下来我们用写一个 用HashMap 有去重功能的集合
HashMap<Student, String>map = new HashMap<>(); map.put(new Student("王龙", 18), "北京"); map.put(new Student("涵涵", 23), "无锡"); map.put(new Student("松", 21), "徐州"); map.put(new Student("王龙", 18), "上海"); System.out.println(map);
TreeMap 也有排序功能 键(key)
总结 Map 以键值的形态储存数据键值是成对出现的 键是唯一不可重复的
Map
Set
他们的去重 和排序 都是 对键进行操作的
接下来 map 的遍历方法
map不能直接遍历集合只能间接的遍历
有三种方法
方法一
map 类中 没有迭代器 不能直接迭代(遍历)
//创建三个元素Hashmap<String,Integer> map = new Hashmap<>();map.put("老王",10);map.put("老宋",3);map.put("老越",13);//去掉所有的keySet<String>keySet = map.keySet();//取出Set里面的迭代器Iterator<String> iterator = keySet.iterator();//为了拿到集合中所有的key 所以要遍历Set集合while (iterator.hasNext()){//获取集合内 每一个元素 String key = Setkey.next(); //通过每一个 key 找出 对应的value的值 Integer value = map.get(key); //从map中找出key的值} }}
方法 二 循环遍历
Set keySet()这个方法是 把 map中的所有键(key)取出来 放入一个Set集合中 返回给你
Hashmap <String,Integer> map = new Hashmap<>();map.put("老王",13);map.put("老宋",16);map.put("老岳",18);//去掉所有的的keySet<String>keySet = map.keyset();//利用增强for循环遍历for(String key:keySet){//通过每一个key 找出 对应的value得值Integer value = map.get(key);//打印 每一个key对应的值System.out.println(key+"="+value);}
方法三
entrySet();
该方法返回的是一个集合 集合中存储是一个一个键值对 对象
Entry对象 中 保存 key和value
利用该方法遍历
HashMap<String, Integer> map = new HashMap<>(); map.put("小王", 11); map.put("小刚", 13); map.put("小红", 10); map.put("小兰",21); //获取map中所有的 Entry 对象的Set集合 Set<Map.Entry<String, Integer>> entrSet = map.entrySet(); //使用 Set集合中 的迭代器 对每一个Entry对象 遍历 java.util.Iterator<Entry<String, Integer>> iterator = entrSet.iterator(); //迭代 while (iterator.hasNext()) { //取出entry对象 Entry<String, Integer> next =iterator.next(); //从Entry 对象中 获取key 和 value String key = next.getKey(); Integer value = next.getValue(); System.out.println(key+"="+value); }
- ⚔疯狂输出⚔ Collection 之 Map 子类
- ⚔疯狂输出⚔ collection中的Set方法
- java之Collection和map的子类以及相关方法
- 疯狂输出⚔ java基础之数组篇
- ⚔疯狂输出⚔数据的排序
- ⚔疯狂输出⚔二维数组
- ⚔疯狂输出⚔ Java中的继承。
- ⚔疯狂输出 ⚔ 集合 和数组.
- 疯狂输出 ⚔ Java中的随机数
- 疯狂输出⚔Java中查表法的使用
- java中关于collection和map及其子类
- 容器之Collection和Map
- ⚔疯狂输出 ⚔ 数组元素的反转!
- ⚔疯狂输出⚔ 数组选择排序法。
- ⚔疯狂输出⚔ 数组中的折半查找
- ⚔疯狂输出⚔面向对象核心思想。
- ⚔疯狂输出⚔ java 中的 多态 快速理解
- ⚔疯狂输出⚔ 类中的String的用法
- IT与风投
- Ardupilot开发环境配置
- HTML基本语法
- 12day
- mysql groupby 优化
- ⚔疯狂输出⚔ Collection 之 Map 子类
- 20171221Capstone培训班
- TCP连接的建立与终止
- Font Awesome(二十一)
- centOS7下安装GUI图形界面
- 2018百度排名规则及算法汇总,必看以免被百度惩罚降权
- Java运行Python脚本的几种方式
- 浅析dubbo原理和实现
- 学Python(5)—魔术方法