Java 集合面试题小结(1)

1. 集合和数组的区别

  • 数组是固定长度的;集合可变长度的。
  • 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。
  • 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。

2. 使用集合框架的好处

  1. 容量自增长;
  2. 提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量;
  3. 可以方便地扩展或改写集合,提高代码复用性和可操作性。
  4. 通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。

3. 常用的集合类有哪些?

Map接口和Collection接口是所有集合框架的父接口:

  • Collection接口的子接口包括:Set接口和List接口
  • Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等
  • Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等
  • List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector.

4.ArrayList 和LinkedList 的区别是什么?

  • 数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。
  • 随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
  • 增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为ArrayList 增删操作要影响数组内的其他数据的下标。
  • 内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
  • 线程安全:ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;
  • 综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。
  • LinkedList 的双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。

5. ArrayList 和 Vector 的区别是什么?

6. 多线程场景下如何使用 ArrayList?

ArrayList 不是线程安全的,如果遇到多线程场景,可以通过 Collections 的 synchronizedList 方法将其转换成线程安全的容器后再使用

JDK集合框架中为我们提供了 ArrayList 的这样一个实现:CopyOnWriteArrayList。但是如果不是写少读多的场景,使用 CopyOnWriteArrayList 开销比较大,因为每次对其更新操作(add/set/remove)都会做一次数组拷贝。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382453.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java 集合 相关面试题

1、说说 List, Set, Queue, Map 四者的区别? ⚫ List(对付顺序的好帮手): 存储的元素是有序的、可重复的。 ⚫ Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。 ⚫ Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储…

Java集合面试题汇总大全

每个集合的出现一定是为了解决某种问题的解决方案。 集合流程图 JAVA中集合和数组的区别Collection和Collections的区别ArrayList和LinkedList 和Vector的区别list/set/map的区别HashSet和TreeSet和LinkedHashSet区别HashMap和Hashtable的比较HashMap和ConcurrentHashMap区别H…

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

前言 来了来了,50道Java集合面试题也来啦~ 已经上传github: https://github.com/whx123/JavaHome 1. Arraylist与LinkedList区别 可以从它们的底层数据结构、效率、开销进行阐述哈 ArrayList是数组的数据结构,LinkedList是链表的数据结构。随机访问的时候…

Java——12个关于Java中集合的面试题

文章目录: 1.请问 ArrayList、HashSet、HashMap 是线程安全的吗?如果不是怎么获取线程安全的集合? 2.ArrayList内部用什么实现的? 2.1 无参构造源码分析 2.2 有参构造源码分析(参数为容量) 2.3 有参构…

Java面试题总结 - Java集合篇(附答案)

目录 一、Java 容器都有哪些? 二、Collection 和 Collections 有什么区别? 三、list与Set区别 四、HashMap 和 Hashtable 有什么区别? 五、说一下 HashMap 的实现原理? 六、set有哪些实现类? 七、说一下 HashSet…

【面试】Java集合面试题

文章目录 集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?集合框架底层数据结构哪些集合类是线程安全的?Java集合的快速失败机制 “fail-fast”&…

面试题----集合

目录 概述 List,Set,Map 集合框架底层数据结构总结 List Set Map 为什么要使⽤集合? 如何选⽤集合? 迭代器 Iterator 是什么? 迭代器 Iterator 有啥⽤? Iterator 和 ListIterator 的区别是什么? 有哪些集合是线程不安…

Java集合面试题(总结最全面的面试题!!!)

文章目录 集合概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些?List,Set,Map三者的区别?集合框架底层数据结构哪些集合类是线程安全的?Java集合的快速失败机制 “fail-fast”&#xff…

50道关于Java的集合经典面试题

1. Arraylist与LinkedList区别 可以从它们的底层数据结构、效率、开销进行阐述哈 ArrayList是数组的数据结构,LinkedList是链表的数据结构。随机访问的时候,ArrayList的效率比较高,因为LinkedList要移动指针,而ArrayList是基于索…

JAVA集合一些面试题

集合是程序员在面试的时候很大可能都会被问到。虽然集合不怎么困难,但是能把他仔细划分却又稍显困难。这里稍微搜罗了一些有关集合的面试题来进行分享。 我们先通过一张思维导图认识一下集合的框架构成,方便理解和记忆。 下面简单的归纳了一下给大家整…

集合面试问题总结

简述Java中的集合 集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。 Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 Iterator:迭代器&#xff0…

java集合详解和集合面试题目

一、集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。 集合(只能存储对象,对象类型可以不一样)的长度可变&#xff0…

Java集合的常见面试题(全)

这里写目录标题 前言常用的集合类有哪些集合底层数据结构ArrayList 和 LinkedList 的区别HashSet 如何检查重复HashSet与HashMap的区别HashMap 和 Hashtable 的区别HashMap 的底层实现HashMap 的长度为什么是 2 的幂次方ConcurrentHashMap 和 Hashtable 的区别HashMap源码细节C…

集合面试题总结

集合 Collection接口:单列集合,用来存储一个一个的对象 List接口:存储有序的、可重复的数据,。 -->“动态”数组 实现类:ArrayList、LinkedList、Vector Set接口:存储无序的、不可重复的数据 实现类&…

10道集合框架面试题(含解析),来看看你会多少

1.Arraylist 与 LinkedList 异同 (1)是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; (2)底层数据结构: Arraylist 底层使用的是Object数组&#…

Java集合面试题(总结最全面的面试题)

集合容器概述 什么是集合 集合就是一个放数据的容器,准确的说是放数据对象引用的容器 集合类存放的都是对象的引用,而不是对象的本身 集合类型主要有3种:set(集)、list(列表)和map(映射)。 集合的特点 集合的特点…

Python编程练习与解答 练习65:温度换算表

编写一个程序,显示摄氏温度和华氏温度转换表。该表的行包括0-100摄氏度之间所有的温度,这些温度时10摄氏度的倍数,列上适当的标题,摄氏度和华氏度之间的换算公式可在互联网上找到。 # 转换公式为:f((c*9)/…

java语言【 #93. 温度换算】(已通过)

题目描述 ​ 读入一个实数表示的摄氏温度 C,将它转换为华氏温度 F 并输出。​ 公式如下: F1.8∗C32 输入 ​ 一个实数表示 C(0.0≤C≤100.0) 输出 ​ 将 C 转换成 F 的结果。 ​ 结果保留两位小数 样例输入 66.66样例输出 151…

热敏电阻-温度换算算法(分段线性拟合法)

概要 在工业上,会有各种读取环境温度,或读取目标物体温度的需求,通常用到的方案有:传感器测温;热敏电阻测温等。本篇着重讲解使用热敏电阻测温的方法。 热敏电阻 何为热敏电阻?热敏电阻即为热电偶传感器…

摄氏温度和华氏温度换算(vb源码)

【实例简介】初步涉及VB 【实例截图】 文件:590m.com/f/25127180-493490306-f0ccf8(访问密码:551685) 以下内容无关: -------------------------------------------分割线----------------------------------------…