Java面试题之集合 list和set比较,各自的子类比较(ArrayList, Vector, LinkedList HashSet TreeSet)

本文深入解析Java集合框架中List、Set、Map的主要实现类,包括ArrayList、LinkedList、Vector、HashSet、TreeSet、HashTable和HashMap的特点及适用场景。对比不同集合在数据结构、线程安全性和操作效率上的差异。

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

ArrayList,LinkedList,Vector 都属于List

List: 元素是有顺序的,元素可以重复,因为每个元素都有自己的角标(索引)。

    |-- ArrayList: 底层的数据结构是数组结构,特点是,查询快,增删稍微慢点。线程不同步。

 

    |--LinkedList: 底层使用的是链表数据结构,特点是:增删快,查找慢。

 

    |--Vector: 底层的数据结构是数组结构,线程同步,被ArrayList代替了,现在用的只有他的枚举。

 

Set: 元素是无序的,且不可以重复(存入和去除的顺序不一定一致),线程不同步。

 

    |--HashSet:底层是哈希表数据结构,根据hashCode和equals方法来确定元素的唯一性

    |--TreeSet:可以对Set集合中的元素进行排序(自然循序),自层的数据结构是二叉树。

       也可以自己写一个实现类Comparable或者Comparator接口,定义自己的比较器,将其作为参数

传递给TreeSet的构造函数。

 

Map : 这个集合是存储键值对的,一对一对往里存,而且要确保键的唯一性(01,张三)这样的行驶打印出来

就是 01 = 张三

    |--HashTable:底层是哈希表数据结构,不可以存入null键和null值,该集合线程是同步的,效率比较低。出现于jak1.0

    |--HashMap: 底层是哈希表数据结构,可以存入null键和null值,线程不同步,效率比较高,代替了HashTable,出现于JDK 1.2

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值