java集合

本文详细介绍了Java集合框架的核心组件,包括Iterator、Collection等接口的功能及使用方法,并对比了ArrayList与LinkedList的特点,以及HashMap与HashSet的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java集合构成图
在这里插入图片描述
1、Iterator(迭代器)接口:它是集合中java.util包的顶级接口(但是它不是Map系列的顶级接口)。迭代器遍历方式, 适用于连续内存存储方式,比如数组、 ArrayList(其实 ArrayList底层实现也是数组形式)。 缺点是只能从头开始遍历, 优点是可以边遍历边删除;可以实现Iterator接口可以增强for循环。
Iterator接口的方法:

(1)、hasNext():是否存在下一项;

(2)、next():获取下一项;

(3)、remove():该方法可以删除由next()最新返回的项;(注意:不能直接调用remove(),必须要在next方法调用之后调用);

(4)、void forEachRemaining(Consumer action):使用Lambda表达式来遍历集合元素,这是java8为Iterator新增的默认方法

2、Collection接口:它是List、Set、Queue接口的父接口,它也是Iterator接口的子接口。
Collection接口的方法:
(1)、size():返回集合的项数;

(2)、isEmpty():判断集合中是否为空;

(3)、contains(Object):判断集合中是否包含某项;

(4)、clear() 移除此 collection 中的所有元素(可选操作)。

(5)、add(E):从集合中添加某项;

(6)、remove(Object):从集合中删除某项;

(7)、Iterator():遍历集合;

Iterator接口的remove的方法和Collection接口的remove的区别?
性能方面:
Iterator接口的remove方法比Collection的remove的效率更高
collection的remove()方法,它的底层是链表结构,虽然他指定删除某个元素,但是他要一个一个区找,效率就比较低
iterator的remove()方法没有参数,它不知道删谁,就结合next()方法使用,直接删除下一个,所以效率会更高
容错方面:
collection的remove()方法可能会报错
iterator的remove()方法不会报错
参数方面:
iterator接口的remove方法不带参数
Collection接口的remove的方法带参数

在这里插入图片描述
ArrayList集合与linkList的区别?
ArrayList(数组结构):查询快
LinkedList(链表结构):增、删、改快
在这里插入图片描述
List、Set、Map之间的区别?
① List和Set都继承了collection接口,Map没有;
② List有序、Set无序、Map无序;
③ List可重复,Set不可重复,Map键值对存储,键不可重复、值不可重复;
④ List可插入多个null元素,Set只允许一个null元素,Map的键只允许一个null,值可允许有多个null

在这里插入图片描述
HashSet、TreeSet、LinkedHashSet的区别:
HashSet做任何事情在三者之间速度最快
TreeSet有排序功能
LinkedHashSet会按照添加的对象保存对象
Queue
在这里插入图片描述
queue:先进先出 堆栈:先进后出
queue是队列的意思,当我们要从数据库拿消息时,先looper进行循环遍历,再将拿到的massage给子线程执行,然后子线程通过handler这个通信机制将msg交给主线程展示在UI。

Array与ArrayList的区别?
① Array是java中的数组 ArrayList是集合也是动态数组
②长度:Array的长度是固定的,ArrayList的长度是可变的
③ 数据类型:Array只能存储相同数据类型的数据,ArrayList可以存储不同数据类型的数据

怎样将一个数组转成List
数组转list集合,使用ArrayList.asList(数组)

在这里插入图片描述
list集合转数组,使用list.toArray()
在这里插入图片描述
HashMap与HashSet的区别?
在这里插入图片描述
HashMap的扩容原理
扩容:16*0.75=12
16是默认初始化容量的大小
扩容并不是说16放满了,放到17的时候才放,而是扩容因子达到容量的75%就要扩容了,扩以前的大小
默认的初始化大小是16,但是这个大小可以改

面试时注意的几点?
1.面试时不要紧张
2.在回答面试官问的技术时,我们应该把技术点带入到案例中或者项目中去描述,描述我们是怎样应用的。
3.在回答面试官的问题时要谦逊一点
4.避免不必要的尬聊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值