JAVA学习笔记之Object知识和Set集合和Map比较.docx

JAVA学习笔记之Object知识和Set集合和Map比较.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA学习笔记之Object知识和Set集合和Map比较一.Object类的三个方法1.toString()对象的自我描述、自我介绍目的简化getter输出public String toString(){return 对象的实例变量;}Student.java不重写toString() 时默认打印格式如下类全名@hashCodeSystem.out.println(s);相当于System.out.println(s.toString());2.equals()复习==和equals:String的两种创建方式以及比较publicboolean equals(Object o){//1.类型相同instanceof或反射判断//2.定义自己的规则}重写equals一定要重写hashCode()3.hashCode 用于加速查找实质索引publicinthashCode(){return ;}hashCode的两个基本原则1.两个对象equals方法比较返回true,那么它俩的hashCode方法也要保证是相同2.对象中用作equals比较标准的属性,都应该用来计算hashCode每种类型的hashCode计算方式参见疯狂java P250二.一个原理 Hash算法?文件夹里找音乐的例子查找算法、存储算法歌名按歌手分苏打绿苏打绿命名的文件夹键 hash算法hashCode哈希马桶对象存储在存储时,为了加速查询,存储的时候就要按照对象的HashCode,存到对应的哈希马桶中(文件夹)对象查找用hash算法找对象,分两步1.通过对象的hashCode找到所对应的哈希马桶(类似???过歌手名找到文件夹)2.通过equals在桶里找对象比较好的hash算法会保证尽量让一个哈希马桶里只有一个对象。equals相等hashCode一定相等 (hashCode是文件夹 equals是歌)hashCode相等equals不一定相等*********************正式进入集合****************************重点: 一个图两个比较接口三个迭代方法一个图集合设计思想根据ordered(有迭代顺序)、sorted(有排序顺序)设计Collection接口Set接口 List接口 Queue接口排序工具单独的接口 MapObject–Arrays–CollectionsList 接口Vector ArrayListLinkedList–ArrayList最常用线性表的顺序存储方式查找对象比较快,插入删除对象时比较慢。1.动态数组(长度可变的数组) 10—–15—22—332.引用类型数组里面的元素都是引用类型3.有迭代顺序迭代顺序为数组下标顺序ArrayList增删改查–Vector(线程安全的ArrayList)–LinkedList(链式数组) 线性表的链式存储方式迭代顺序为链表的插入顺序,链表插入删除方便,查找慢顺带讲解泛型1.规范添加到集合的对象的类型,只能为一种2.泛型是编译时检查演示代码:public class TestFanXing {public static void main(String[] args) {ListString list = new ArrayListString();Object obj = new Integer(1);list.add((String)obj);}}Set集合HashSetSortedSet(接口)LinkedHashSetNavigableSet(接口)TreeSet–HashSet1.去重案例:比如呼叫中心,对打入电话的客户去重,如果有100个用户,每个用户打了10遍,按电话号码去重,否则在回拨的时候就会打一百遍电话。面试题:对HashSet集合去重的标准:hashCode() 和equals() 必须都相同,才是意义上相同的对象,就不能将象添加到集合中去,并把相同的对象去掉。只要hashCode()和equals()有一个不相同,那么他两不是相同的对象,就能添加进去。2.无迭代顺序:所谓的迭代顺序就是输出顺序和添加顺序是不是一致。额外知识(可以不管):实质输出顺序是根据一定算法求出来的该算法和hashCode有些关系(可阅读源码并结合打断点查看)–LinkedHashSet有迭代顺序的HashSet迭代顺序是链表中元素的添加顺序面试题:HashSet和LinkedHashSet如何选用?不要求输出顺序和插入顺序一致时,使用HashSet要求输出顺序和插入顺序一致时,使用LinkedHashSet性能考虑频繁插入数据时,用HashSet因为LinkedHashSet要维护指针域所以它比HashSet稍慢主要为了迭代时使用LinkedHashSet比较快

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档