集合知识点整理

本文深入解析了集合在Java面试中的常见问题,包括Collection、Iterable、List、Set、Map等核心概念的区别,以及ArrayList、LinkedList、HashSet、TreeSet、HashMap等具体实现的特点,帮助读者掌握集合的使用和原理。

    小编今日无聊,想起了面试时的一些问题。所以 整理了一下面试中经常遇到的一些关于集合的面试题!
我在面试的时候,面试了几家公司都问到了集合的问题,下面我先用一张思维导图带大家捋一捋集合之间的关系吧!!!
在这里插入图片描述
首先,根据图片我们可以看到集合被分为了左右两边;我们先来了解一下右边的结构关系
根据根据右边的图我们很清晰的可以看到connection的父亲是iterable,然后list、set、queque都是他的儿子,接下来我们就根据这个关系去分析面试官他们都会问些什么问题
首先我们可以看到iterable的remove()方法与connection的emove(obeject)方法,它们都是remove方法,但是一个有参一个没参,所以第一个面试题就是:


1、Conllection接口的remove()方法和iterable接口的remove()方法的区别?
①:性能方面:
Conllection的remove(object)方法必须要有明确删除的对象,然而需找到这个对象的方法遵循的是单链表结构查询(单链表结构:一个一个的遍历查询),这样的效率很低;而iterator是根据他的next()方法进行删除的,在很多方面它的效率是高于conllection的(例如:1-10里面,隔一个删除一个)
②:容错方面:
假如我们使用connllection的remove()方法但是又用的iterator遍历的话,它就可能报错,因为iterator根据的是下一个来删除,而connllection是根据对象来删除的!这样就可能因为下标的改变而出现异常
我们根据测试的代码来看:
在这里插入图片描述


2、ArrayList和LinkList的区别?
ArrayList是一个数组结构,它的查询速度快
LinkedList是一个链表结构,增、删、改快


3、HashSet、TreeSet、LinkedHashSet区别?
①.需要速度快的集合,使用HashSet
②.需要集合有排序功能,使用TreeSet
③.需要按照插入的顺序存储集合,使用LinkedHashSet
速度:
HashSet > LinkedHashSet > TreeSet

接下来我们看到集合的思维导图的左边:

4、Array与ArrayList有什么区别?
①Array是Java中的数组,声明数组有三种方式

				int[] a=new int[10];
				int a[]=new int[10];
				int a[]={1,2,3,4};

定义Array数组必须指定这个数组的数据类型及数组的大小

②ArrayList是动态数组,也就是数组的复杂版本,它可以动态的添加和删除元素,被称为”集合“

				ArrayList list = new ArrayList(10);
				ArrayList<Integer> list1 = new ArrayList<Integer>();

ArrayLsit我们不给他指定类型的情况下,它可以添加进不同类型的元素的,而且arraylist是可以不用指定长度的。在使用泛型时,我们就只能添加一种类型的数据了

所以他们之间的去区别就是:
①.ArrayList是Array的复杂版本
②.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据
③.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的


5、HashMap、TreeMap、linkedHashMap区别?
①.在Map中插入、删除和定位元素,HashMap是最好的选择
②.需要集合有排序功能,使用TreeMap更好
③.需要按照插入的顺序存储集合,使用LinkedHashMap
速度:
HashMap > LinkedHashMap > TreeMap

6、HashMap和HashSet区别
在这里插入图片描述

7、List、Set、Map之间的区别
List:1.可以允许重复的对象。
   2.可以插入多个null元素。
        3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。


Set:1.不允许重复对象
   2. 无序容器,你无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序。
        3. 只允许一个 null 元素


Map: 1.Map不是collection的子接口或者实现类。Map是一个接口。
        2.Map 的 每个 Entry 都持有两个对象,也就是一个键一个值,Map 可能会持有相同的值对象但键对象必须是唯一的。
        3. TreeMap 也通过 Comparator 或者 Comparable 维护了一个排序顺序。
        4. Map 里你可以拥有随意个 null 值但最多只能有一个 null 键。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值