java集合中常见的数据结构_Java集合中的那些事

原标题:Java集合中的那些事

1、集合的由来

面向对象语言对于事物的操作都是以对象体现的,为了方便对多个对象的操作,java就产生了集合类,用于对不同对象进行操作!

虽然存储多个对象,可以使用数组,但是数组的长度固定,不适应变化的需求,所以Java就提供了集合。

2、集合和数组的区别

数组:可存储基本数据类型,虽然也可以存储对象,但是长度固定可以存储基本类型和引用类型 但是是同一种类型是的

集合:长度可变,只能用于存储对象,集合可以用来存储不同类型的对象

A:长度区别

数组的长度固定

集合长度可变

B:内容不同

数组存储的是同一种类型的元素

而集合可以存储不同类型的元素

C:元素的数据类型问题

集合只能存储引用类型

数组可以存储基本数据类型,也可以存储引用数据类型

刚说过集合是存储多个元的,但是呢,存储多个元素我们也是有不同需求的:比如说,我要这多个元素中不能有相同的元素,再比如说,我要这多个元素按照某种规则排序一下。针对不同的需求,Java就提供了不同的集合类,这样呢,Java就提供了很多个集合类。这多个集合类的数据结构不同,结构不同不重要的,重要的是你要能够存储东西,并且还要能够使用这些东西,比如说判断,获取等。既然这样,那么,这多个集合类是有共性的内容的,我们把这些集合类的共性内容不断的向上提取,最终就能形成集合的继承体系结构。

c5449c3161b5b3addac72e27836a795f.png

3、Collection集合的功能概述?

Collection层次结构中的根接口。Collection表示一组对象,这些对象也称为 collection 的元素。一些 collection允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

4、迭代器为什么不定义成一个类,而是接口呢?

假设定义成一个类,这样我们就可以通过创建对象,调用该类的方法来实现集合的遍历,但是,java中提供了很多集合类,而这些集合类的数据结构是不同的,所以,存储方式也是不同的。进而,他们的遍历方式也应该是不同的,最终,迭代器就没有定义成一个具体的类。而无论你使用何种集合,在集合的遍历上都应该具备元素获取的功能,同时再辅助相应的判断,这样在遍历是才能更加准确。也就是说判断和获取是集合遍历不可缺少的,而每种集合的遍历又有所不同,所以,我们把这两个功能提取出来,并不具体实现,这种方式就是接口。

5、List集合的特有功能?

有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。特点:有序 可重复 可为空 有下标。

6、常见的数据结构的特点?

栈:先进后出 先入栈再出栈 举例:子弹夹

队列:先进先出 举例:买票

数组:存储同一类型的多个元素的容器 有索引方便获取 特点:查询快,增删慢

链表:由一个链子把多个结点链接起来组成的数据 结点:由数据和地址组成 特点:查询慢,增删快

a0e672027d7f77e12c1209951eac8635.png

7、List集合的子类特点?

ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高

Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低

LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高

8、List的三个儿子你准备使用谁?请说明理由

查询多就用ArrayList

增删多就用LinkedList

什么不知道就用ArrayList

就算需要线程安全也不用Vector,可以用 Collections.synchronizedList 将ArrayList包装起来

9、并发修改异常

A:出现的现象

迭代器遍历集合,集合修改集合元素

B:原因

迭代器是依赖于集合的,而集合的改变迭代器并不知道。

C:解决方案

a:迭代器遍历,迭代器修改(ListIterator)元素添加在刚才迭代的位置

b:集合遍历,集合修改(size()和get())元素添加在集合的末

有想学Java的朋友欢迎来报名 。机不可失哦。更多技术交流者或想获取JAVA资料请加微信(858568103)返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值