




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Map 集合 集合练习集合 集合练习 1 Map 集合集合 1 1 Map 集合介绍集合介绍 Collection 集合的特点 集合中存储的所有元素都是单一元素 元素和元素之间没有必然的关系 因此我们把 Collection 集合也称 为单列集合 Map 集合 Map 集合中保存的是一组 一对 数据 数据之间存在着一定的对应关系 Map 集合就可以将数据的对 应关系维护起来 当这样的数据存储在 Map 集合中 我们取出的时候 就可以根据这种对应关系获取到其中 这组数据 public interface MapMap 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map 集合中的集合中的 key 是唯一的 每个是唯一的 每个 key 都有一个都有一个 value 值和其一一对应 值和其一一对应 1 2 Map 集合中的方法集合中的方法 1 2 1 添加方法添加方法 通过演示 Map 接口中的 Map 方法 发现 put 方法可以将指定的一组数据保存到集合中 但是 put 方法有返回值 如果调用 put 方法的时候 在保存的 key 和 value 值时 key 在集合中不存在 这时相当于给集合中保存 了一组新的数据 这时 put 方法得到的 null 如果保存的这组数据中的 key 在集合中已经存在 这时会用当前的 value 值覆盖掉 key 对应的原来的 value 值 并返回被覆盖的那个 value 值 总结 总结 put 方法可以将一组对象保存到方法可以将一组对象保存到 Map 中 返回的当前中 返回的当前 key 对应的原始的对应的原始的 value 值 如果值 如果 key 是第一次出是第一次出 现返回的现返回的 null 如果不是第一次 就会修改原始的 如果不是第一次 就会修改原始的 value 值 返回原来的值 返回原来的 value 值值 1 2 2 删除方法删除方法 根据指定的 key 删除 key 和 value 这组数据 返回 key 对应的 value 值 演示Map中的删除方法 public class MapDemo2 public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee fff System out println map 删除方法 Object o map remove aaa System out println o System out println map 清空 map clear System out println map 1 2 3 获取方法获取方法 根据指定的 key 获取对应的 value 值 如果给出的 key 在集合中没有 返回 null Map集合中的获取方法 public class MapDemo3 public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee fff 打印 System out println map Object o map get aa System out println o System out println map 1 2 4 判断方法判断方法 演示Map集合中的判断方法 public class MapDemo4 public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee fff 判断集合中是否包含指定的key System out println map containsKey aa System out println map containsValue bb System out println map isEmpty 1 3 Map 集合的遍历集合的遍历 1 3 1 Map 集合遍历介绍集合遍历介绍 Map 集合中保存的 key value 一组数据 它们不能直接使用 Iterator 进行遍历 如果需要对 Map 集合进行遍历 这时必须先将 Map 集合转成 Collection 下的某个集合容器 然后再使用 Iterator 进行遍历 Map 集合的遍历有两种方式 1 获取 Map 中的所有 key 然后将这些 key 保存到 Set 集合中 这时就可以使用 Iterator 进行遍历 进 而就能得到每个的单独的 key 值 再使用 Map 中的 get key 方法得到 key 对应的 value 值 2 获取到 Map 中的 key 和 value 这组数据 再封装成一个新的对象 1 3 2 keySet 遍历遍历 使用Map集合中的keySet方法遍历Map集合 public class KetSetDemo public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee ff 获取到Map中的所有key组成的Set集合 Set set map keySet 遍历Set集合 for Iterator it set iterator it hasNext 获取到Set集合中的某个key值 Object key it next 调用Map集合中的get方法 得到key对应的value值 Object value map get key System out println key value 1 3 3 entrySet 遍历遍历 使用Map集合中的 entrySet 方法遍历Map集合 public class EntrySetDemo public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee ff 获取到所有key和value组成的Entry对象 保存到Set集合中 Set set map entrySet 遍历Set集合 for Iterator it set iterator it hasNext 已经获取到key和value组成的Entry对象 Object obj it next 由于取出的数据被提升成Object类型 这时需要向下转型 Entry entry Entry obj System out println entry getKey entry getValue 就业班中学习 JavaWEB 中的 JSP 中的 JSTL 技术时 其中有 foreach 的标签 遍历 Map 集合的时候 使用的 entrySet 1 3 4 values 方法方法 获取到的 Map 集合中的所有 value 值组成的 Collection 集合 演示Map集合中的values方法 public class ValuesDemo public static void main String args 创建集合对象 Map map new HashMap map put aa bb map put cc dd map put ee ff 获取到Map集合中的所有value值 Collection coll map values 遍历集合 for Iterator it coll iterator it hasNext System out println it next 1 4 HashMap 演示演示 基于哈希表的 Map 接口的实现 此实现提供所有可选的映射操作 并允许使用 null 值和 null 键 除了 非同步和允许使用 null 之外 HashMap 类与 Hashtable 大致相同 此类不保证映射的顺序 特别是它不 保证该顺序恒久不变 HashMap 是 Map 接口的实现类 它的底层使用的哈希表 哈希表作用在 HashMap 集合的 key 上 当使用自定义对象作为 HashMap 集合的 key 值时 这个自定义对象所属的类需要复写 Object 类中的 hashCode 和 equals 方法 演示HashMap 使用自定义对象作为Map的key值 public class HashMapDemo public static void main String args 创建集合对象 HashMap map new HashMap map put new Person 张三 23 上海 map put new Person 张三 23 上海 map put new Person 李四 33 北京 map put new Person 王五 39 东莞 获取所有的key组成的set集合 Set set map keySet 遍历 for Iterator it set iterator it hasNext Object key it next 获取value值 Object value map get key System out println key value 1 5 TreeMap 演示演示 基于红黑树 Red Black tree 的 NavigableMap 实现 该映射根据其键的自然顺序进行排序 或者根据创建 映射时提供的 Comparator 进行排序 具体取决于使用的构造方法 TreeMap 的底层是二叉树结构 二叉树作用在集合的 key 上 TreeMap 集合可以对保存在其中的元素进行排序 如果将对象保存在 TreeMap 集合中 key 上的这个对象应该具备比较的功能 key 上的对象所属的类应该实现 Comparable 接口 或者是在创建 TreeMap 的时候 传递一个 Comparator 对象 使用自定义对象作为TreeMap的key值 public class TreeMapDemo public static void main String args 创建对象 TreeMap map new TreeMap map put new Person 张三 23 上海 map put new Person 张三 23 上海 map put new Person 李四 33 北京 map put new Person 王五 33 东莞 使用entrySet方法进行遍历 Set set map entrySet for Iterator it set iterator it hasNext Object obj it next Entry entry Entry obj System out println entry getKey entry getValue 1 6 Map 练习 练习 需求 统计字符串中每个字符的次数 分析 字符串数据是不确定的数据 其中的字符是什么也不知道 但是我们可以只要这个字符出现过 就需要给出一个计数器统计这个字符的次数 遍历字符串 取出每个字符 然后判断它是否已经在统计的计数器中出现过 如果出现过 就给这个计数器 1 如果没有出现过 说明这个字符是第一次出现 就给这个字符的计数器赋值为1 统计字符的次数 字符 次数 使用从字符串中取出的字符作为Map的key值 次数作为Map的value值 只要从字符串中取出一个字符 就判断当前这个字符在Map的key中是否存在 如果存在 就取出对应的value值 1 再保存到Map中 如果不存在 就说明 字符是第一次出现 直接给value值为1 保存到Map中 public class MapTest public static void main String args String s djfjsdl使用从字符串中取出的字符作为Map的key值 次数作为Map的value值 需要定义一个集合 Map map new HashMap 遍历字符串 for int i 0 i s length i 取出字符 char ch s charAt i 判断当前的字符在Map中是否存在 if map containsKey ch 判断成立说明当前从字符串中取出的字符 已经出现过 Integer value Integer map get ch 给value 1 再保存到Map中 value value 1 map put ch value else 判断不成立 说明当前的字符是第一次出现 map put ch 1 遍历Map集合 取出每个字符的次数 Set set map keySet for Iterator it set iterator it hasNext Object key it next Object value map get key System out println key 出现的次数是 value 1 7 Hashtable 演示演示 此类实现一个哈希表 该哈希表将键映射到相应的值 任何非 null 对象都可以用作键或值 Hashtable 集合它属于 Map 集合 但是是 JDK1 0 时期的 底层是哈希表 和 HashMap 功能一致 它是安全的 演示古老的双列集合Hashtable public class HashtableDemo public static void main String args 创建集合对象 Hashtable table new Hashtable table put aa bb table put ccc ddd table put ccc ddd table put eee fff 遍历 Enumeration en table keys while en hasMoreElements Object key en nextElement Object value table get key System out println key value 2 工具类介绍工具类介绍 工具类 在 JDK 中提供大量的类 但是这些类都有对用的功能 可是某些的功能并不能满足实际的所有需求 于是针对这些类有提供的其他的类 处于辅助其他类的这些类被称为工具类 JDK 中的工具类一般都以 s 结尾 并且工具类中的所有方法全部是静态的 2 1 Collections 工具类工具类 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成 它包含在 collection 上操作的多态算 法 即 包装器 包装器返回由指定 collection 支持的新 collection 以及少数其他内容 Collections 中的方法都是静态的 可以操作集合 反转 List 集合中的元素 反转比较器 结论 在使用集合的时候 如果发现需要使用集合的某个功能 但是自身没有这时就需要考虑使用结论 在使用集合的时候 如果发现需要使用集合的某个功能 但是自身没有这时就需要考虑使用 Collections 中的方法 中的方法 2 2 Arrays 工具类工具类 Arrays 工具类中提供的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级会计师《中级经济法》考点融资租赁合同2篇
- 北京市行纪合同4篇
- 租赁合同模板商用3篇
- 养老地产公寓入住协议书7篇
- 农业碳汇项目碳排放权交易市场潜力及发展路径报告
- 农业碳汇项目碳排放权交易市场交易机制优化与创新发展报告
- 东莞翻新改造工程方案(3篇)
- 玲珑金矿安全培训平台课件
- 玫瑰痤疮课件
- 非标工程油缸定做方案(3篇)
- 鸡粪肥料购销协议
- 天然矿泉水购销合同(2024版)
- 抗震支架采购及施工合同
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 专题02 概率与统计解答题综合(解析版)
- 儿童考古小知识课件
- nfc菠萝果汁工艺流程
- 《智能电气设计》教案全套 陈慧敏 1-20 软件安装-配电柜门设备安装及布线
- 禁毒预防药物滥用
- 正常血细胞形态学课件
- 股东大会制度法理研究
评论
0/150
提交评论