集合是程序员在面试的时候很大可能都会被问到。虽然集合不怎么困难,但是能把他仔细划分却又稍显困难。这里稍微搜罗了一些有关集合的面试题来进行分享。

我们先通过一张思维导图认识一下集合的框架构成,方便理解和记忆。

下面简单的归纳了一下给大家整理了在面试过程中遇到的集合面试问题及解决方案。

1.ArrayList和LinkList的区别

ArrayList(数组结构):

优点:get和set调用花费常数时间,也就是查询的速度快;

缺点:新项的插入和现有项的删除代价昂贵,也就是添加删除的速度慢

LinkedList(链表结构):

优点:新项的插入和和现有项的删除开销很小,即添加和删除的速度快

缺点:对get和set的调用花费昂贵,不适合做查询

2.Collection接口的remove()方法和Iterator接口的remove()方法区别?

①性能方面

Collection的remove方法必须首先找出要被删除的项,找到该项的位置采用的是单链表结构查询,单链表查询效率比较低,需要从集合中一个一个遍历才能找到该对象;

Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高

②容错方面

在使用Iterator遍历时,如果使用Collection的remove则会报异常,会出现ConcurrentModificationException,因为集合中对象的个数会改变而Iterator 内部对象的个数不会,不一致则会出现该异常

在使用Iterator遍历时,不会报错,因为iterator内部的对象个数和原来集合中对象的个数会保持一致

3

Array与ArrayList有什么区别

①Array是Java中的数组,声明数组有三种方式

在定义一个数组的时候,必须指定这个数组的数据类型及数组的大小,也就是说数组中存放的元素个数固定并且类型一样

②ArrayList是动态数组,也就是数组的复杂版本,它可以动态的添加和删除元素,被称为”集合“,在不使用泛型的情况下,这个list是可以添加进不同类型的元素的,而且arraylist是可以不用指定长度的。在使用泛型时,我们就只能添加一种类型的数据了

4.怎样将一个数组转成List,有什么方法

①数组转list,可以使用Arrays.asList(数组)

②List转数组,使用list.toArray()

5.HashSet、TreeSet、LinkedHashSet区别?

可以从集合的使用场合回答面试官

①.需要速度快的集合,使用HashSet

②.需要集合有排序功能,使用TreeSet

③.需要按照插入的顺序存储集合,使用LinkedHashSet

7.HashMap和HashSet区别

a. HashMap实现了Map接口,HashSet实现了Set接口

b.HashMap存储键值对,HashSet存储对象

c.HashMap调用put()向map中添加元素,HashSet调用add()像set中添加元素

d.HashMap使用Key计算hashcode,HashMap使用成员计算Hashcode

HashMap相对于HashSet较快,因为它是使用唯一的键获取对象

HashSet较HashMap来说比较慢

8.HashMap的实现原理

通过put和get存储和获取对象,存储对象时,我们将K/V传给put方法时,它调用hashcode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量。获取对象时,我们将K传递给get,他调用hashcode计算hash从而得到bucket位置,并进一步调用equals()方法确认键值对。

9.List、Set、Map之间的区别

List和Set都继承Collection,但是Map不是Collection的子接口。

List

Set

Map

可以允许重复的元素

不允许重复元素

键值对存储,键必须唯一,但是值可以重复

可以插入多个null元素

只允许一个null元素

键只允许一个null,

值可以允许有多个null

有序的容器,插入的顺序和输出的顺序一样

无序容器

无序容器

JAVA集合一些面试题相关推荐

  1. 002 Java集合泛型面试题

    Java集合/泛型面试题 1 ArrayList和linkedList的区别 ArrayList: 可以看作是能够自动增长容量的数组 ArrayList底层的实现是Array, 数组扩容实现 Arra ...

  2. 50道Java集合经典面试题

    1. Arraylist与LinkedList区别 可以从它们的底层数据结构.效率.开销进行阐述哈 ArrayList是数组的数据结构,LinkedList是链表的数据结构. 随机访问的时候,Arra ...

  3. 问遍了身边的面试官朋友,我整理出这份 Java 集合高频面试题(2022年最新版)

    微信搜索[程序员囧辉],关注这个坚持分享技术干货的程序员. 我的最新文章:百万级QPS,支撑淘宝双11商品浏览需要哪些技术 前言 大家好,我是囧辉,面试系列开篇:Java 基础高频面试题(2021年最 ...

  4. 50道Java集合经典面试题(收藏版)

    前言 来了来了,50道Java集合面试题也来啦~ 已经上传github: https://github.com/whx123/JavaHome 1. Arraylist与LinkedList区别 可以 ...

  5. Java集合常见面试题

    原文链接:https://javaguide.cn 集合面试常问 Java集合框架继承图 综合面试题 1.说说List.Set.Queue和Map四者的区别. 2.集合的底层数据结构 3.如何选取集合 ...

  6. java 面试 框架_这份java集合框架面试题,轻松搞定面试官!

    集合框架 1. ArrayList 和 Vector 的区别. 这两个类都实现了 List 接口(List 接口继承了 Collection 接口),他们都是有序集 合,即存储在这两个集合中的元素的位 ...

  7. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

  8. Java集合容器面试题

    文章目录 集合容器概述 什么是集合 集合的特点 集合和数组的区别 使用集合框架的好处 常用的集合类有哪些? List,Set,Map三者的区别?List.Set.Map 是否继承自 Collectio ...

  9. Java集合容器面试题重点汇总

    集合容器概述 什么是集合 **集合框架:**用于存储数据的容器. 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构. 任何集合框架都包含三大块内容:对外的接口.接口的实现和对集合运算的算 法 ...

最新文章

  1. mysql 不让读的锁_MySQL实战45讲阅读笔记-锁
  2. linux-2.6.18源码分析笔记---中断
  3. Java面试参考指南–第1部分
  4. linux 安装系统 逻辑卷,Linux逻辑卷工具lvm的使用教程
  5. IOS组件绑定无效错误
  6. RabbiMQ基础以及spring-boot-starter-amqp使用
  7. 算法基础部分2-分治
  8. 本周论文推荐 -- 对抗生成网络、知识图谱补全、对话系统、文本生成
  9. 博客V7之后,喜庆排名进入2000之内
  10. 利用 /dev/zero 创建虚拟硬盘
  11. cron表达式解析 3秒执行一次
  12. 数学建模中的常见模型
  13. matlab中如何用m文件,MATLAB中M文件的使用
  14. 软件Copyright中年份有什么意义?
  15. 分布式Redis集群解决方案
  16. BZOJ 1059 [ZJOI2007]矩阵游戏
  17. 1229. 日期问题 Java题解 (枚举) 【第八届蓝桥杯省赛C++B组,JAVA B组】
  18. 有了AI智能绘画,我也可以成为绘画大师——全球最大规模中文跨模态生成模型ERNIE-ViLG
  19. czl蒻蒟的OI之路
  20. 【匿名网络综述】匿名分布式网络之匿名网络综述

热门文章

  1. Xcode编译没问题而使用xcodebuild命令却生成失败
  2. “数加”斩获2017软博会金奖
  3. 有auto为什么还要decltype ?详解decltype的用法
  4. 鸡舍养殖环控系统简介
  5. 九章算法班ladder题目梳理
  6. c语言实训题目设计报告 模拟高考平行志愿投档,高考模拟平行志愿投档高考模拟平行志愿投档.doc...
  7. 某众点评爬虫采集-剧本杀市场分析-Python
  8. python面向对象3-多层继承、super()、私有权限、多态、类属性实例属性、类方法和静态方法
  9. 自考毕业生求职频遭冷遇
  10. fatal: unable to update url base from redirection: asked for