Java数据结构

本文深入讲解Java集合框架,包括List、Set和Map三种主要类型,探讨它们的内部实现原理,如ArrayList的数组结构,LinkedList的链表结构,以及HashSet如何通过hashCode和equals方法确保元素的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

补发:2019-7-20 学习日记之Java数据结构

Java数据结构

一、集合

1、集合类型主要有3种:list、set和Map.

2、集合接口分为:Collection和Map,list、set实现了Collection接口.他的一个类继承结构如下:

Collection<–List<–Vector

Collection<–List<–ArrayList

Collection<–List<–LinkedList

Collection<–Set<–HashSet

Collection<–Set<–HashSet<–LinkedHashSet

Collection<–Set<–SortedSet<–TreeSet

3、Iterator:迭代器,它是Java集合的顶层接口(不包括 map 系列的集合,Map接口 是 map 系列集合的顶层接口)

Iterable和Iterator的区别:

Iterable里面封装了 Iterator 接口。所以只要实现了只要实现了Iterable接口的类,就可以使用Iterator迭代器了。

Iterator :存在于 java.util 包中。核心的方法next(),hasnext(),remove()。

4、List:有序、可以有重复的集合

List 接口的三个典型实现:

①、List list1 = new ArrayList();

底层数据结构是数组,查询快,增删慢;线程不安全,效率高

②、List list2 = new Vector();

底层数据结构是数组,查询快,增删慢;线程安全,效率低,几乎已经淘汰了这个集合

③、List list3 = new LinkedList();

底层数据结构是链表,查询慢,增删快;线程不安全,效率高

5、Set:典型实现 HashSet()是一个无序,不可重复的集合

①、当向HashSet集合中存入一个元素时,HashSet会先调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置

②、如果 hashCode 值不同,直接把该元素存储到 hashCode() 指定的位置

③、如果 hashCode 值相同,那么会继续判断该元素和集合对象的 equals() 作比较

④、hashCode 相同,equals 为 true,则视为同一个对象,不保存在 hashSet()中

⑤、hashCode 相同,equals 为 false,则存储在之前对象同槽位的链表上,这非常麻烦,我们应该约束这种情况,即保证:如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。

参考原文:
作者:cccereus
来源:CSDN
原文:https://blog.csdn.net/cccereus/article/details/80565163

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值