VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1300|回复: 10

java.util包集合类中的ArrayList,LinkdList,HashMap,Vector四个类相互间的一些联系和区别

[复制链接]

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-16 08:00:01 | 显示全部楼层 |阅读模式
说说集合类中的ArrayList,LinkdList,HashMap,Vector四个类相互间的一些联系和区别好不?嘿嘿
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-4-18 07:45:01 | 显示全部楼层
ArrayList,LinkedList,Vector都是List的实现类,前两都没有实现同步机制,Vector实现了同步机制,ArrayList代表大小可变的数组,允许对元素进行快速随机访问,但向List中间进行添加移除元素操作时效率很差,LinkedList采用了链表数据结构,对顺序访问进行了优化,提高了向List中间位置进行操作的效率。Vector的作用跟ArrayList差不多,只是区别于一个实现了同步机制,一个没有。

HashMap是Map的一个实现类,采用了哈希算法来存取Key对象,具有很好的存取性能。并且允许将null作为Map的Key或Value,HashMap也是没有实现同步机制的。

书上有很详细的介绍,
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-20 19:45:01 | 显示全部楼层
学了数据结构就一切明了:)
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-24 19:45:01 | 显示全部楼层
说具体点好不
为什么说学数据结构后就明了?
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-25 09:30:02 | 显示全部楼层
学了数据结构后你也可以写自己的ArrayList,LinkdList,HashMap,Vector

嘿嘿
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-25 10:15:01 | 显示全部楼层
比如链表和数组的区别
必须要数据结构知识才能懂
以及树等...
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-26 09:30:01 | 显示全部楼层
哦!懂了些,现在就只是学了那四个类中方法的基本用法.自己想看看他们的一些联系咯!
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-5-31 16:15:02 | 显示全部楼层
怎么没人来了呢?继续啊,想看看啊
回复

使用道具 举报

0

主题

63

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-6-1 21:00:01 | 显示全部楼层
HashMap和其他3个没有可比性。

AL, LL, V都是List,

AL、V都是基于动态数组,而LL基于(双向)链表、因而LL更适于频繁进行插、删的操作
AL、LL的方法都不是synchronzied,而V是synchronized的
由于LL是链表,所以不存在初始大小、扩大策略等问题
AL、V的构造函数里都可以指定初始大小、且默认都是10(所以在能够确定你要放的东西个数的大概范围时应该事先指定,避免多次重新分配空间)
AL在需要扩大的时候 * 1.5,而V默认 * 2,且V可以指定每次固定变大一个尺寸,比如每次扩大10,而不是翻倍
3者的构造函数,还有addAll方法能够帮助彼此之间转换,用以在不同阶段的大批量操作下,提高性能
V的岁数比较大,属于JDK中的元老。早在java.util.Collection/List还没出现之前的JDK 1.0里,就有了。所以某些情况下,比如MS VM下也通用Applet,只能用Vector
回复

使用道具 举报

0

主题

63

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-6-1 21:15:01 | 显示全部楼层
HashMap和其他3个没有可比性。

AL, LL, V都是List,

AL、V都是基于动态数组,而LL基于(双向)链表、因而LL更适于频繁进行插、删的操作
AL、LL的方法都不是synchronzied,而V是synchronized的
由于LL是链表,所以不存在初始大小、扩大策略等问题
AL、V的构造函数里都可以指定初始大小、且默认都是10(所以在能够确定你要放的东西个数的大概范围时应该事先指定,避免多次重新分配空间)
AL在需要扩大的时候 * 1.5,而V默认 * 2,且V可以指定每次固定变大一个尺寸,比如每次扩大10,而不是翻倍
3者的构造函数,还有addAll方法能够帮助彼此之间转换,用以在不同阶段的大批量操作下,提高性能
V的岁数比较大,属于JDK中的元老。早在java.util.Collection/List还没出现之前的JDK 1.0里,就有了。所以某些情况下,比如MS VM下也通用Applet,只能用Vector
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表