一、JavaSE_集合(集合简单认识、Collection、Lis…
2018-06-18 02:27:01来源:未知 阅读 ()
集合(一)
一、集合的简单认识
1.侃一侃
集合,说白了就是存放数据的,还记得OOP当中,我们曾说过,OOP将数据放在第一位,然后再考虑操作数据的算法。也就是研究数据的存储方式,或者说是数据结构,咱先不谈数据结构那些东西。集合用来存放数据,会有不同的存储数据的方式,如数组,集合。那集合和数组有什么区别呢?
| 区别 | ||
| 数组 |
1.数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值。 2.数组长度是固定的,不能自动增长 |
|
| 集合 |
1.集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象。 2.集合的长度的是可变的,可以根据元素的增加而增长 |
|
看了上图想必就知道什么时候用数组什么时候用集合了吧~
数组:当元素固定时,那么就推荐使用数组。
集合:当元素不固定时,那么就推荐使用集合。
2.来个初步认识(集合体系结构)
菜来了,上图:

图中反映了各个集合的特点,正如我们在烧锅做饭的时候采用不同的工具一样,不同的碗和碟子有不同的作用。
接下来我们重点谈谈List。
Collection是单列集合的根接口,图中,他有两个子接口。一个是List,一个是Set。今天主要分析List,也就是ArrayList,LinkedList,以及Vector(了解)。
List是一个存放有序的集合,可以存储重复。我们来看这一句代码,List list = new ArrayList(); 注:这里没有考虑泛型,接下来会谈,先不去管。
List接口指向子类的具体实现,而ArrayList存放的就是有序的集合,会随着存放元素的增大而增大。同样,LinkedList也是一样,那么LinkedList和ArrayList有什么区别呢?
要想知道区别,那就得知道他们底层是怎么实现的?把上面那个图表格化一下。
| ArrayList | 底层是用数组实现的 |
| LinkedList | 底层使用链表实现的 |
一个是数组实现,一个是链表实现。
数组有什么特点:数组查询修改快,因为根据索引去查一步到位;增加和删除慢,因为增加删除都要移动索引。
链表有什么特点:链表删除和增加快,但是查询和修改比较慢。
| 数组 |
* 查询,修改快 * 增加,删除慢 |
| 链表 |
* 查询,修改慢 * 增加,删除快 |
二、List集合三个子类的特点
1.
| 特点 | ||||
| ArrayList |
|
|||
| LinkedList | 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。 |
|||
| Vector | 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。 |
|||
2.
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
3.Vector和ArrayList的区别:
Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
共同点:都是数组实现的
4.ArrayList和LinkedList的区别:
ArrayList底层是数组结果,查询和修改快
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的
5.既然List有三个子类,那么我们应该如何去选择呢?
查询多用ArrayList
增删多用LinkedList
如果都多ArrayList(最常用)
如有错误之处,欢迎指正。
邮箱:it_chang@126.com
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 与JAVA集合相遇 2020-06-11
- Java笔记:集合 2020-06-10
- Linux简单命令的学习 2020-06-10
- 因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名 2020-06-10
- 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重 2020-06-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
