黑马程序员技术交流社区
标题: 【成都校区】2018/11/14 9:28 JAVAEE就业day04 [打印本页]
作者: blovedr 时间: 2018-11-22 13:12
标题: 【成都校区】2018/11/14 9:28 JAVAEE就业day04
2018/11/14 9:28 就业day04
Java.util.Map<k,v>集合(李)
Map双列集合的特点:
1. 每个元素有两个值,(键和值)
2. 其中键不能重复, 值可以重复
3. 可以通过键找到对应的值
地图:
地址 地名(可重复)
Map:(Map接口)
key value
key不可重复
value可以重复的
通过key可以找到对应值
Collection单列集合
每个元素只有一个值
Map实现类介绍
1.HashMap 底层是哈希表的实现(HashMap中的键其实就是HashSet)
LinkedHashMap:HashMap子类 就是一个有序的HashMap
2.Hashtable
Properties 可以方便和IO流结合使用
比较:
Hashtable是同步的, Hashtable不允许null键和null值
HashMap是不同步的, HashMap允许null键和null值, 但是null值只能出现一次
1.3 Map常用方法(功能):
V put(K k, V v):添加元素, 如果键已经存在则用新值替换旧值, 并返回此时的“旧值”
Put方法添加元素, 如果键不存在, 直接添加,put方法返回null,如果键已经存在, 如果键不能重复, 会将新的值替换旧的值, 再将此时的“旧的值”返回。
V remove(K v): 把指定的键 所对应的键值对应元素, 在Map集合中删除, 返回被删除元素的值
V get(Object key) : 获取指定键的值(通过键获取值)
Boolean containsKey(Objectkey): 判断指定的键是否存在
Boolean containsValue(Objectkey): 判断指定的值是否存在
需求:
1. 创建HashMap<K V>, 往集合中添加多组元素, 其中键是省份名称,值是省会城市名称
2. 删除某个省份
3. 获取…
遍历功能:
Set<K> keyset()获取包含所有键的Set集合
其实HashMap中的键就相当于一个HashSet
(键找值的方式遍历Map集合)
1. Set<K>set = map.keySet()
2. For(Kkey:set){
V v =map.get(key);
}
遍历map集合的方式二: 获取所有包含键值对元素(Entry)的Set集合
Set<Map.Entry<K,v>> entrySet()
1. Set<Map.Entry<K,v>> entrys = map.entrySet()
2. For(Entry e: entrys){
e.getkey()
e.getValue()
}
HashMap:
存储:
将键值对数据, 封装到Entry对象中
整体再放入一个Set集合中
获取:
获取Set集合
获取Entry对象
获取键值对数据
1.7用HashMap存储自定义类型键值(李)
由于HashMap中的键就相当于一个HashSet, 所以HashMap中的键是自定义类型的时候, 则需要重写HashCode()和equals()方法
其实使用HashSet存储元素的时候, 底层是把元素存储到HashMap的键中。
需求: 计算一个字符串中每个字符出现次数
(helloworld)
/*
用双列集合存储数据:
字符: 出现次数
Character Integer
遍历字符串获取字符, 统计字符:
1. 判断字符是否已经被统计过
已经统计过: 把之前出现的次数+1
没有统计过: 设置次字符出现的次数为1
*/
2.1 JDK 9 的新特性:添加元素到集合的of方法【参考视频】
在List,Map,Set接口中定义了一些重载的静态方法of可以实现多个元素添加到集合中。
注意:
1. 只能使用接口类型调用这些静态方法,实现类去调用则不可以
2. 使用of方法将元素添加到集合中个,元素不能再改变
3. Map/Set接口中不允许重复的键/元素,则会??? 2018.11.14
Debug调试程序:
使用方式:
在行号的右边, 鼠标左键单击, 加断点
右键, 选择Debug执行程序
程序就会停留在添加的第一个断点处
执行程序:
f8: 逐行执行程序
f7: 进入到方法中
shift+f8:跳出方法
f9: 跳到下一个断点, 如果没有下一个断点, 那么就结束程序
Ctrl+f2: 退出debug模式, 停止程序
Console:切换到控制台
Debug调试程序:(李)
1. 点断点(希望查看代码执行步骤的开始)
2. 以debug模式启动
3. 按F8查看执行流程(如果想看调用的方法,则按下F7进入方法)
如何排序:
直接把字符串是做不到的, 如果每张牌都有一个跟大小相关的序号, 发牌的时候发序号,
4 2 1 3: 1 2 3 4
5 7 6 8: 5 6 7 8
最后根据序号取出牌盒中对应的牌
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |