Java集合之List和Set

  Collection 存放是单个对象。常用的List和Set都继承自该接口。

  List 的特点是:有序,可重复。有序的意思是指, List 中对象存放的“位置”和将对象放入 List 中的先后有关系。例如,依次将学号为1、2、3的 Student 放入 List 中,遍历 List 输出元素的顺序可能是 [Student 1, Student 2, Student 3] 或者 [Student 3, Student 2, Student 1] ,之所以可能不同是因为我们没有说明实现类。
  List 的常用具体实现类: ArrayList 和 Vector 的底层实现是一样的,他们区别是: ArrayList 线程不安全,但效率快; Vector 线程安全,代价是效率慢。他们的底层都是用数组来实现,也就是说,对象都是存放在一个一维 Object 数组里的,对数组进行封装,优化对数组的操作,也就是他们的方法。
  另外一个常用的List实现类是 LinkedList ,它是双向链表,特点是:修改速度快,查询速度慢。这里说的修改是指对 LinkedList 的修改,比如插入或者删除 LinkedList 中的一个对象。
  由于对 List 的查询都只是单纯的遍历整个链表,因此 List 的缺点是查询速度慢

  而 Set 的实现类的弥补了这点,Set 的实现类查询速度较快。
  Set 的特点是:无序,不可重复。无序的意思是指, Set 中对象存放的“位置”和将对象放入 Set 中的先后没有关系。例如,依次将学号为1、2、3的 Student 放入Set中,遍历 Set 输出元素的顺序则不会是按放入的顺序或者逆序。
  Set 的常用具体实现类: HashSet 和 TreeSet 。 TreeSet 实现的接口是 SortedSet , SortedSet 继承自 Set ,因此 TreeSet 也是 Set 的实现类。
  Set的另外一个常用实现类是 TreeSet ,它实现的是 SortedSet 。它是可排序的 Set ,TreeSet 可以使用两种排序方式进行排序:自然排序和比较器排序。这两种排序方法我会在以后的博客里说到。这两种排序方式分别对应着 TreeSet 的两个构造方法: TreeSet() 和 TreeSet(Comparator comparator) 。 TreeSet 基于平衡二叉树实现。平衡二叉树的特点是查询速度快,增删速度较慢。所以当我们需要对数据(也就是对象)频繁查询的话,那我们选择TreeSet更加优化。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值