Java核心编程day2

  1. ArrayList和linkedList的对比

ArrayList:底层使用数组实现的,查询快,增删慢,线程不安全,当数据查询比较多时使用

linkedLis:底层使用双向链表实现的,查询慢,增删快。当对数据进行操作较多时使用

  1. Set接口:实现类主要掌握:HashSet,TreeSet

hashSet:数组+链表+红黑树

TreeSet:使用二叉树实现,可以对常见元素进行排序

  1. Set接口的特点:

没有通过下标操作的API,存储无序,不能存储重复元素

问题:为什么说是存储无序?

set结合在存储值时,会根据值的hashcode来计算出该值在数组中的存储位置,因为不同的值,一般hashcode不相同,所以计算出来的存储位置,却取决于hashcode,因此存储位置是杂乱的

为什么说是不重复?

在存储值时,首先判断是否已经存储了hashcode一样的值,使用equals进行判断,equals相同--》不存储 equals---》不相同,则存储,如果存在不相同的hashcode直接存储。

  1. 为什么TreeSet存储自定义类型数据会报错

是因为Treeset不知道按照类型的哪个属性进行排序。

处理办法:

(1)让实体类实现Comparable接口(内部比较器)

(2)重写comparableTo方法,制定类的排序规则

规则:

前>后 返回 正数

相等 返回 0

前<后 返回 负数

  1. 在HashSet存储自定义类型中,如何将两个对象属性完全相同的对象在进行hashcode存储时,将其看成重复元素,不进行重复添加?

第一步:让属性值相同的两个对象相同的hashcode

第二步:让属性值相同的两个对象进行equals比较时,返回true--重写equals方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值