Java基础之集合

本文深入解析了Java集合类的特性与区别,包括List、Set、Map、Arraylist、LinkedList、HashMap等,涵盖了数据存储方式、性能特点及应用场景,帮助读者理解集合类的内部机制。

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

1.List Set 区别

ListSet都是Conllection接口的子接口。

List中的元素是有顺序的,可以重复的。

Set中的额元素是没有顺序的,不可以重复的.

 

 

 

2.SethashCode以及equals方法的联系

Set是通过hashCodeequals比较元素是否重复的。

先使用hashcode方法判断已经存在HashSet中元素的hashcode值和将要加入元素hashcode值是否相同。如果不同,直接添加;如果相同,再调用equals方法判断,如果返回true表示HashSet中已经添加该对象了,不需要再次添加(重复),如果返回false就表示不重复,可以直接加入HashSet

 

 

 

 

3.List Map 区别

List:是存储单列数据的集合,存储的数据是有序并且是可以重复的 
Map
:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复

 

 

 

4.Arraylist 与 LinkedList 区别

1  ArrayList底层使用数组实现。LinkedList底层使用链表实现。

2 对于随机方法 getset ArrayList的优于LinkedList,因为LinkedList查询时需要指针移动。

3 对应增删改操作 LinkedList优于ArrayList,因为ArrayList需要创建新数组拷贝数据,元素数量越多效率差距越大。

 

 

 

 

5.ArrayList Vector 区别

1 ArrayListVector都是list的实现类。

2 ArrayListVector底层都是数组实现的。

区别

1 ArrayList的所有方法都不是线程安全的,Vector的所有方法都是线程安全的。

2 ArrayListVector的空间增长方式不同,ArrayList按照1.5被扩容,Vector当扩容容量大于0时,新数组的长度为原数组的长度+扩容容量。否则新数组的长度为原数组的两倍。

 

 

 

 

 

 

6.HashMap Hashtable 的区别

核心区别:

1 HashMap的方法不是同步的,Hashtable的方法是同步的。

2 HashMap允许valuenull,允许有一个keynullHashtable不允许出现为nullkeyvalue

次要区别:

1 HashMapHashtable继承的父类不同。

2 两个Api也略有不同,

3 Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2

 

 

 

 

 

 

7.HashSet HashMap 区别

1 HashMap实现的是Map接口。HashSet实现的是Set接口。

2 HahsMap是以键值对的形式存储数据,HashSet只是存储对象。

3 HashMap使用键值对来计算HashCodeHashSet使用对象来计算HashCode

 

 

 

8.HashMap 和 ConcurrentHashMap 的区别

1 HashMap不是线程安全的,ConcurrentHashMap是线程安全的。

2 ConcurrentHashMap对整个桶数组进行了分段,而HashMap则没有

 

 

 

9.HashMap 的工作原理

原理:HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(key)HashMap中获取对象。当我们给put()方法传递键和值时,我们先对键调用hashCode()方法,返回的hashCode用于找到bucket位置来储存Entry对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值