前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java学习笔记-全栈-Java基础-08-容器中的重点

Java学习笔记-全栈-Java基础-08-容器中的重点

作者头像
devi
发布2021-08-18 15:21:13
3110
发布2021-08-18 15:21:13
举报
文章被收录于专栏:搬砖记录

泛型
代码语言:javascript
复制
泛型使遍历时不需要强制转换,帮助建立类型安全的集合。
通过remove理解“引用”

Collections类都有个remove方法:将对象从容器中移除。 但并非删除该对象,移除之后,该对象依旧还在。因为容器存放的时该对象的引用地址,移除的只是地址,实际上对象本身还在内存中。

“除了基本类型,都是引用数据类型,引用数据类型只是引用地址,而非该对象本身”

总结
图片来源于网络
图片来源于网络
1.Collection接口:
  • 1.List的元素有顺序,可重复,包括:
    • a)ArrayList:查询效率高,增删效率低,线程不安全
    • b)LinkedList:查询效率低,增删效率高,线程不安全
    • c)Vector:ArrayList的线程安全版,效率低
  • 2.Set的元素无顺序,不可重复,包括:
    • a)HashSet:查询、增删效率高
    • b)TreeSet:用TreeMap的Key实现的,内部需要对存储的元素进行排序,因此,对应的类需要实现Comparable接口(编写比较逻辑),这样才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。
2. Map
  • Map,key-value,key不可重复,value可以,包括
    • a)HashMap:最常用,效率最高
    • b)TreeMap:自动按照key升序排列
3. 操作
  • 使用Iterator遍历容器
  • 类 java.util.Collections 提供了对Set、List、Map操作的方法(排序,填充,查找,打乱等)
重写equals、hashCode方法(重点)
  • 如下情况,(可能)需要重写equals/hashCode
    • a)要将自定义的对象放入HashSet中处理
    • b)要将自定义的对象作为HashMap的key
    • c)将自定义对象放入容器中后,可能会调用remove、contains时(实际上使用集合装对象的时候,约定需要重写这两个方法)

原因:

上述三个情况都隐式的涉及到了“对象比较

  • a\b中:HashSet\HashMap的key都是惟一的(所以内部实现就应该存在比较),若放入自定义对象,可能会出现“应该相同的对象但不相同”的情况,比如自定义对象id=1的有两个(实际业务我们需要他们相同),但他们在HashSet和HashMap的key中并不相同,因此需要重写equals(id相等就判断相等)和HashCode(将hash的对象都设置为ID即可保证他们HashCode一致)。
  • c中:remove和contains都涉及到对象的识别(即比较),因此需要重写equals才能识别。
  • 默认的equals比较的是对象内存地址,hashCode求的是对象内存地址转换成的数,实际也是内存地址。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 泛型
  • 通过remove理解“引用”
  • 总结
    • 1.Collection接口:
      • 2. Map
        • 3. 操作
        • 重写equals、hashCode方法(重点)
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档