Set和List 的关系与区别
2015-10-06 15:32
253 查看
两个接口都是继承自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().
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().
相关文章推荐
- IOS应用通过UIWEBVIEW实现与JS交互
- 百度地图---获取当前的位置返回的是汉字显示而不是经纬度
- POJ题目分类 (膜拜经典)
- 递归法和循环法判断数组是否递增
- http编程系列3:http协议POST方式提交数据并返回结果
- 滴滴再曝收费不靠谱:去程19元 回时164.8元
- 考试总结
- mybatis实现关联查询
- 内存泄漏及常见的解决办法
- JavaBean 属性命名规范特例
- Struts 2 ——ActionContext和ServletActionContext区别
- androidpn 学习记录
- 关于iOS9适配中出现的问题
- 【转】使用 Hive 构建数据库
- SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确
- USACO Section 2.3 Controlling Companies (迭代更新)
- 4.Swift 自定义View
- android 如何在string里使用%
- 蓄水池抽样-Reservoir Sampling
- bootstrap 按钮 文本 浮动 隐藏