- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode。在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。 为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在) 也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了,说通俗一点:Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值 * (1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。 (2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。 (3)后序遍历(LRD),首先遍历左子树,然后遍历右子树,最后访问根结点。简记左-右-根。 * * 对于该例子,如果要实现输出倒序,定义个比较器类实现Comparetor接口 class MyComparator implements Comparator { // 实现比较方法 public int compare(Object obj1, Object obj2) { String id1 = (String) obj1; String id2 = (String) obj2; return pareTo(id2); } } ? ? public class T2 { public static void main(String[] args) { TreeSet tm = new TreeSet(new MyComparator());// 传入一个自定义比较器 tm.add(Jack); tm.add(Rose); tm.add(Lucy); ? Iterator it = tm.iterator(); while (it.hasNext()) { Object key = it.next(); ? System.out.println(key ); } } } * Introduction To Java Programming College Of Software Liu. Zhi Gang Email:dqpilzg@163.com Chater13 集合框架 1、集合框架概述 数组 长度固定,某些场合不适用。例如:学校不停有新生报到,同时也有学生离校,数目不确定。 集合框架 分类:包括单列集合Collection和双列集合Map。 Collection(集合):单列集合的根接口,存储一系列符合某种规则的元素。有两个重要的子接口,List(序列)和Set(集)。List特点:元素有序(存入和取出顺序一致),可重复。Set特点:元素无序,不可重复。 Map(映射):双列集合的根接口,存储具有键(Key)、值(Value)映射关系的元素,即每个元素都包含一对键值,使用Map时可以通过指定的Key找到对应的Value,例如:根据学号找到学生。此外,要求元素的键必须各不相同。 集合框架主要包括 集合容器—用于存储数据 迭代器—用于获取数据 算法—用于操作数据 集合框架对编程有什么好处呢? 提高程序设计效率。 提高程序速度和质量。集合框架通过提供对有用的数据结构和算法的高性能和高质量的实现使你的程序速度和质量得到提高。 集合框架鼓励软件的复用。对于遵照标准集合框架接口的新的数据结构是可复用的。 2、Collection接口 主要方法 boolean add(Object o):将对象添加给集合 boolean addAll(Collection c) : 将集合c 中所有元素添加给
文档评论(0)