一、Collection接口简介

collection在java集合中,算是顶级接口,它继承了iterable接口,不能实例化,只能实例化其子类。之所以需要这样一个接口,是因为java作为面向对象,总是避免不了处理多个对象的情况,要处理多个对象,首先需要容器存储,这个容器就是集合。为什么有了数组,还需要集合,因为数组的功能单一,长度不可变,而有些集合实现类则是对数组操作的封装。

Collection集合和数组的区别:

  • 集合长度可以变,数组是定长的
  • 集合存储的元素只能是引用类型,而数组则可以是基本类型
  • 数组只能执行基本操作,而集合功能经过拓展,更加丰富。
graph TD;
Collection -->List-有顺序,可重复
List-有顺序,可重复 -->LinkedList-使用链表实现,线程不安全
List-有顺序,可重复 -->ArrayList-数组实现,线程不安全
List-有顺序,可重复 -->Vector-数组实现,线程安全
Vector-数组实现,线程安全 -->Stack-堆栈,先进后出

Collection-->Set-不可重复,内部排序
Set-不可重复,内部排序-->HashSet-hash表存储
HashSet-hash表存储-->LinkHashSet-链表维护插入顺序
Set-不可重复,内部排序-->TreeSet-二叉树实现,排序

Collection-->Queue-队列,先进先出

二、Collection源码分析

Collection继承于Iterable接口,而Iterable接口,是集合的顶级接口,没有之一,Iterable接口定义的功能是可以迭代,也就是获取迭代器iterator的功能,因此Collection以及其实现类也间接获得迭代的功能。

为什么需要这样子定义呢?我陷入了深深地思考...

最新文章

  1. react-native DatePicker日期选择组件的实现
  2. vim快捷键
  3. iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
  4. SCOI 2013 密码 & 乱搞
  5. Linux C学习笔记06--Tlist使用(编程工具篇)
  6. 100+诡异的数据集,20万Eclipse Bug、死囚遗言等
  7. JOptionPanel类的解析
  8. Apache OpenOffice 与 LibreOffice 之间的抉择
  9. finalize过程
  10. DOS批处理延时技术
  11. Oracle用脚本语言导入SCOTT用户
  12. POJ 1251 Jungle Roads (最小生成树)
  13. STL优先队列
  14. 列表的pop()和路径拼接问题
  15. go get 的使用
  16. FFMPEG转换WAV到MP3
  17. android免root hook框架legend
  18. redis基本使用
  19. mysql创建的数据库在电脑什么位置?
  20. HashMap实现原理(转)

热门文章

  1. 【转】Setting up SDL 2 on Visual Studio 2019 Community
  2. Windows Server 2019 在桌面图标
  3. python爬虫使用scrapy框架
  4. [Luogu P2831] 愤怒的小鸟 (状压DP)
  5. 848.Shifting Letters——weekly contest 87
  6. 转载-Java匿名内部类
  7. linux + MongoDB 安装 + 部署 + 讲解 (满满干货看完记得收藏噢)
  8. 关于ubuntu出现的一些问题的解决方法
  9. 日志切分神器--logrotate
  10. 1redis介绍