Java基础学习积累(1)---ArrayList、LinkedList、HashSet

关于Java基础学习的积累和知识总结

1、ArrayList和LinkedList底层实现和区别

实现原理:
arraylist 的实现是基于动态数组的实现,linkendlist是基于链表的数据结构
区别:
array list查询快,增删慢【因为ArrayList可以随属机定位,而LinkedList要移动指 针一步一步的移动到节点处】
linkendlist 查询慢,增删快【linkendlist 只需要对指针进行修改即可】

2、HashSet 集合
2.1、哈希表底层特点:
去重
无序
2.2、哈希表去重的原理
【1】 依赖hashcode 和 equals两个方法

  • hashCode方法来自Object,用来返回一个int类型整数,返回值就是成为哈希值。
  • Object中hashCode得到的值,是有底层对象的地址经过哈希运算得到的一个值,通常认为是一个地址值(其实不一定是真实的地址,这个哈希值有可能是被地址经过哈希运算之后的值)
  • 当我们对hashCode方法重写后,不是有地址计算得到哈希值,而是通过该对象的所有参与运算的成员变量的值进行运算得到结果。
  • 可以认为是一种对象的标志。

【2】、如果两个对象的哈希值是不同的,我们可以断定两个对象一定是不同的。HashSet就可以直接存入该元素
【3】、1. 如果两个对象的哈希值是相同,不能确定两个对象是否相同,进一步使用equals判断两个对象是否相同。如果是true,相同,如果false。

哈希表结构的HashSet集合,存储元素前先要调用hashCode方法是否有相同的哈希值元素。如没有直存入,如果有相同,进一步判断equals。

HashSet存储JDK中已存在的类型:String,包装类型对象…这些类型已经做了对equals和hashCode方法的重写
注意:如果自定义类型要达到去重存储,应该重写hashCode和equals

3、LinkedHashSet
LinkedHashSet底层结构:

  1. 链表结构【维护存入的顺序】
  2. 哈希表结构【去重】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值