实用数据结构第六讲Map接口125_第1页
实用数据结构第六讲Map接口125_第2页
实用数据结构第六讲Map接口125_第3页
实用数据结构第六讲Map接口125_第4页
实用数据结构第六讲Map接口125_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五讲第五讲 Map接口及常用实现类接口及常用实现类2本讲目标本讲目标l接口:Map、SortedMapl类:HashMap、LinkedHashMap、TreeMap、HashtableMap接口接口l将键(Key)映射到值(Value)的对象。l一个映射不能包含重复的键(Key) ;l每个键最多只能映射到一个值。lMap看起来比较像由映射组成的Set。lMap接口不是 Collection 接口的继承。Map接口接口l定义:键映射到值键最多只包含一键最多只包含一个个null,而值可,而值可以有多个以有多个nullKeyValuel特点:键(Key)不允许重复; 一个键(Key)只能映射到一

2、个值(Value)。Map接口中的集合接口中的集合lMap接口提供三种collection视图,允许以键集、值集 或键-值映射关系集的形式查看某个映射的内容。允许以三种方法将映射视作集合,这三种方法就是:keySet、values 和 entrySet: lkeySet是映射中包含的键集: Set keys=map.keySet()lvalues是映射中的值的集合:Collection values=map.values();lentrySet 是包含在映射中的键-值对的集:Set kvs=map.entrySet(); 内容为Map.Entry的集合l所有通用的映射实现类应该提供两个“标准的

3、”构造方法:l一个 void(无参数)构造方法,用于创建空映射;l一个是带有单个 Map 类型参数的构造方法,用于创建一个与其参数具有相同键-值映射关系的新映射。 Map接口接口l常用方法l常用实现类l常用子接口clear() ,containsKey(key),containsValue(value),entrySet(),keySet(),values(),get(key),put(key,value),putAll(map),remove(key),size(),isEmpty(),equals(o),hashCode()SortedMapHashMapLinkedHashMapTree

4、MapHashtablePropertiesHashMap类类l基于哈希表的Map接口实现l影响性能参数对对Key进行散列(进行散列(无序映射无序映射)初始容量初始容量加载因子加载因子迭代时间受迭代时间受容量容量和和映射大小映射大小的影响的影响Map接口和接口和HashMap类类l某培训中心学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象 Jack西苑中心毕业的李明西苑中心毕业的李明Rose西苑中心毕业的刘丽西苑中心毕业的刘丽现在希望通过英文名称,获得该学员对象的详细信息,如现在希望通过英文名称,获得该学员对象的详细信息,如何实现?何实现?存储方式如何选择?存储方式如何选择?元素

5、个数不确定元素个数不确定使用集合类使用集合类通过通过key(英文名称)获得(英文名称)获得value(学员对象)(学员对象)存储对象如何确定?存储对象如何确定?类型:学员类型:学员属性:中心名称、姓名属性:中心名称、姓名Map接口和接口和HashMap类类 第一步,确定存储方式第一步,确定存储方式 1、Map接口用于维护接口用于维护“键键-值对值对”的关联性,可以通过键查找值的关联性,可以通过键查找值2、HashMap是是Map接口的一个具体实现类接口的一个具体实现类 Map接口和接口和HashMap类类 l第二步:确定存储对象1、创建类型:学员2、包含属性:中心名称、姓名public cla

6、ss Student private String name; / 学员姓名学员姓名private String school; / 中心名称中心名称public Student(String name, String school) = name;this.school = school;public String toString() return school+毕业的毕业的+name;重写重写Object的的toString()方法,用于输出调试和描方法,用于输出调试和描述信息述信息Map接口和接口和HashMap类类 l第三步:具体实现1、把英文名称与学员对象按照“

7、键-值对”的方式存储在HashMap中2、分别打印键集、值集、以及键-值对集合3、判断是否存在某个键,如果存在则根据键获取相应的值4、根据键、删除某条记录public class MapTest public static void main(String args) Student student1 = new Student(李明李明, 北京中心北京中心);Student student2 = new Student(刘丽刘丽, 天津中心天津中心); Map students = new HashMap(); students.put(Jack, student1); students.p

8、ut(Rose, student2); System.out.println(键集:键集:+students.keySet(); System.out.println(值集值集:+students.values(); System.out.println(键键-值对集合值对集合:+students); String key = Jack; if(students.containsKey(key) System.out.println(students.get(key); students.remove(key); System.out.println(键键-值对集合值对集合:+students

9、); 123键集:键集:Jack, Rose值集值集: 北京中心毕业的李明北京中心毕业的李明, 天津中心毕业的刘丽天津中心毕业的刘丽键键-值对集合值对集合:Jack=北京中北京中心毕业的李明心毕业的李明, Rose=天津天津中心毕业的刘丽中心毕业的刘丽北京中心毕业的李明北京中心毕业的李明键键-值对集合值对集合:Rose=天津天津中心毕业的刘丽中心毕业的刘丽控制台输出控制台输出4请给出下面请给出下面Java代码的运行结果代码的运行结果import Java.util.*;public class TestMap public static void main(String args) Stude

10、nt student1 = new Student(李明李明, 西苑中心西苑中心);Student student2 = new Student(刘丽刘丽, 西苑中心西苑中心);Student student3 = new Student(张娜张娜, 马甸中心马甸中心);Student student4 = student1; Map students = new HashMap(); students.put(Jack, student1); students.put(Rose, student2); students.put(Mary, student3); students.put(Ro

11、se, student4); System.out.println(键集:键集:+students.keySet(); System.out.println(值集值集:+students.values(); 键集:键集:Jack, Mary, Rose值集:值集: 西苑中心毕业的李明西苑中心毕业的李明, 马甸中心毕业的张娜马甸中心毕业的张娜, 西苑中心毕业的李西苑中心毕业的李明明LinkedHashMap类类lHashMap的子类l可预知迭代顺序的链接哈希映射l影响性能参数与插入元素顺序相同与插入元素顺序相同迭代时间与映射大小成比例,与容量无关迭代时间与映射大小成比例,与容量无关初始容量初始容

12、量加载因子加载因子Hashtable类类l实现Map接口,继承Dictionary类(过时)l实现一个哈希表l影响性能参数初始容量初始容量加载因子加载因子SortedMap接口接口l有序映射l按键进行排序自然顺序自然顺序或或给定的给定的Comparator比较器比较器有序映射中的有序映射中的键必须键必须实现实现 Comparable 接口接口或者或者指定指定Comparator比较器比较器SortedMap接口接口l所有通用的有序映射实现类应该提供四个“标准的”构造方法:lvoid(无参数)构造方法,创建一个空的有序映射,按照键的自然顺序进行排序。l带有一个 Comparator 类型参数的构

13、造方法,创建一个空的有序映射,根据指定的比较器进行排序。l带有一个 Map 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系与参数相同,按照键的自然顺序进行排序。l带有一个 SortedMap 类型参数的构造方法,它创建一个新的有序映射,其键-值映射关系和排序方法与输入的有序映射相同 SortedMap接口接口l常用方法l常用实现类l常用子接口clear() ,containsKey(key),containsValue(value),entrySet(),keySet(),values(),get(key),put(key,value),putAll(map),remove(key),size(),isEmpty(),equals(o),hashCode()NavigableMapTreeMapcomparator(),firstKey(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论