两个接口都是继承自Collection.
List
(inteface)
次序是List
的最重要特点,它确保维护元素特定的顺序.
--ArrayList 允许对元素快速随机访问.
--LinkedList 对顺序访问进行优化,向List
中间插入与移除的开销并不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().这些方法使得LinkedList可当作堆栈/队列/双向队列.
Set
(inteface)
存入Set
的每个元素必须唯一,不保证维护元素的次序.加入Set
的Object必须定义equals()方法
--HashSet 为快速查找而设计的Set
,存入HashSet对象必须定义hashCode().
--TreeSet 保护次序的Set
,使用它可以从Set
中提取有序序列.
--LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的次序.
它们之间的存储方式不一样:
TreeSet采用红黑树的树据结构排序元素.
HashSet采用散列函数,这是专门为快速查询而设计的.
LinkedHashSet内部使用散列以加快查询速度,同时使用链表维护元素的次序.
使用HashSet/TreeSet时,必须为类定义equals();而HashCode()是针对HashSet,作为一种编程风格,当覆盖equals()的时候,就应该同时覆盖hashCode().
Set和List 的关系与区别
最新推荐文章于 2025-11-06 22:21:29 发布
本文详细解析了Java中List和Set接口的不同实现类,包括ArrayList、LinkedList、HashSet、TreeSet及LinkedHashSet的特点与应用场景。对比了它们在存储方式上的差异,如散列函数、红黑树结构等,并介绍了使用这些集合类时需要注意的事项。
628

被折叠的 条评论
为什么被折叠?



