Java数据结构--集合、数组、队列、链表

本文详细介绍了Java集合框架的基础概念,包括List、Set和Map三种主要集合类型的特点与应用场景。对比了ArrayList、Vector和LinkedList的不同,并解释了HashSet的工作原理及其内部元素的存储方式。

一、集合

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 值也应该相同。

----------------------------------------------------------------------------------------------------------------------有待更新

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值