java集合面试题

devtools/2025/1/16 17:37:03/

java集合面试

  • java集合面试
        • java集合框架的基础接口有哪些?
        • 单列集合的基础接口
        • List, Set, Map 是否继承自 Collection 接口
        • List、Map、Set 三个接口,存取元素时,各有什么特点?
        • 你所知道的集合类都有哪些?主要方法?
  • 单列集合Collection
          • Collection为什么不继承Cloneable和Serializable?
        • Collection 和 Collections 的区别
    • List
        • 你知道的 List 都有哪些?
        • List 和 Vector 有什么区别?
        • List 是有序的吗?
        • List 是线程安全的吗?如果要线程安全要怎么做?
        • 怎么给 List 排序?
        • Arrays.asList 方法后的 List 可以扩容吗?
        • List 和 Array 之间如何互相转换?
      • ArrayList
        • ArrayList 默认大小是多少,是如何扩容的?
      • LinkedList
        • ArrayList 和 LinkedList 的区别?分别用在什么场景?
        • ArrayList 和 LinkedList 的底层数据结构是什么?
        • 说出 ArrayList,Vector, LinkedList 的存储性能和特性
    • Set
        • Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有何区别
  • 双列集合的基础接口Map
          • 为什么Map不继承Collection接口
        • HashMap 和 Hashtable 的区别
        • ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别

java_2">java集合面试

集合框架
iterator
单列集合
双列集合
collection
List
ArrayList
Vector
Stack
LinkedList
Queue
Deque
ArrayDeque
priorityQueue
Set
HashSet
LinkedHashSet
SortedSet
TreeSet
EnumSet
Map
HashMap
LinkedHashMap
SortedMap
TreeMap
HashTable
Properties
EnumMap
WeakHashMap
IdentityHashMap

上图为整体的集合框架图,在理解下面的面试题的时候,这个图可以更好的帮助你理顺思路

java_41">java集合框架的基础接口有哪些?

集合分为单列集合和双列集合

单列集合的基础接口

Iterator、Collection、List、Set、Queue

List, Set, Map 是否继承自 Collection 接口

List,Set 是,Map 不是

List、Map、Set 三个接口,存取元素时,各有什么特点?

List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保
存 key-value 值,value 可多值。

你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,
它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

单列集合Collection

作为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素(Elements)

Collection为什么不继承Cloneable和Serializable?

collection接口是一个抽象表现,更重要的是让他的实现类来继承Cloneable和Serializable,这样才有意义。
反过来说,只有与具体实现打交道,克隆和序列化的含义与语义才能发挥出来作用。

Collection 和 Collections 的区别

Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.
Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

List

特点:

  • 有序集合
  • 可以包含重复元素
  • 可以通过它的索引来访问集合中的任一元素。
    List更类似于一个长度可以动态变化的数组。
你知道的 List 都有哪些?

ArrayList、LinkedList、Vector 等。

List 和 Vector 有什么区别?

Vector 是 List 接口下线程安全的集合。

List 是有序的吗?

List 是有序的。

List 是线程安全的吗?如果要线程安全要怎么做?

List 中 的 Vector 才 是 线 程 安 全 的 , 其 他 要 实 现 线 程 安 全 使 用 工 具 类
Collections.synchronizedList(new ArrayList())方法。

怎么给 List 排序?

使用 List 自身的 sort 方法,或者使用 Collections.sort(list)方法;

Arrays.asList 方法后的 List 可以扩容吗?

Arrays.asList 使用的是 final 数组,并且不支持 add 方法,不支持扩容。

List 和 Array 之间如何互相转换?

List>Array 使用 toArray 方法,Array>List 使用 Arrays.asList(array)方法,由于它是固定的,不固定的可以使用 new ArrayList(Arrays.asList(array))。

ArrayList

底层结构:数组

ArrayList 默认大小是多少,是如何扩容的?

Jdk1.7 之前 ArrayList 默认大小是 10,JDK1.7 之后是 0,JDK 差异,每次约按 1.5 倍扩容。

LinkedList

底层结构:双向链表

ArrayList 和 LinkedList 的区别?分别用在什么场景?

ArrayList 和 LinkedList 数据结构不一样,前者用在查询较多的场合,后者适用于插入较多的场合。

ArrayList 和 LinkedList 的底层数据结构是什么?

ArrayList 使用的是数组结构,LinkedList 使用的是链表结构。

说出 ArrayList,Vector, LinkedList 的存储性能和特性

1.ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,
2.Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差
3. LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

Set

特点:

  • 不包含重复元素
Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有何区别

Set 里的元素是不能重复的,那么用 iterator()方法来区分重复与否。equals()是判读两个
Set 是否相等
equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两
个分离的对象的内容和类型相配的话,返回真值

双列集合的基础接口Map

Map是一个将key映射到value的对象(也就是key=value的键值对),一个Map不能包含重复的key,每个key最多只能映射一个value。
Map 提供 key 到 value 的映射

为什么Map不继承Collection接口

尽管Map接口和它的实现也是集合框架的一部分,但是Map不是集合,集合也不是Map。
再说,Map包含key-value对,他提供抽取key或者value列表集合的方法,但是它不适合“”一组对象“”规范。

HashMap 和 Hashtable 的区别

HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主要区别在于 HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。
Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。
最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。
Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。

ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别

就 ArrayList 与 Vector 主要从二方面来说.
一.同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半
就 HashMap 与 HashTable 主要从三方面来说。
一.历史原因:Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是 Java 1.2 引进的 Map
接口的一个实现
二.同步性:Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,不是同步的
三.值:只有 HashMap 可以让你将空值作为一个表的条目的 key 或 value


http://www.ppmy.cn/devtools/151009.html

相关文章

(即插即用模块-Attention部分) 四十四、(ICIP 2022) HWA 半小波注意力

文章目录 1、Half Wavelet Attention2、代码实现 paper:HALFWAVELET ATTENTION ON M-NET FOR LOW-LIGHT IMAGE ENHANCEMENT Code:https://github.com/FanChiMao/HWMNet 1、Half Wavelet Attention 传统的图像增强方法主要关注图像在空间域的特征信息&am…

DFT可测性设置与Tetramax测试笔记

1 DFT 1.1 DFT类型 1、扫描链(SCAN): 扫描路径法是一种针对时序电路芯片的DFT方案.其基本原理是时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop,简称FF)的时序电路网络的反馈。 Scan 包括两个步骤,scan…

蓝桥杯第二天学习笔记

二维码生成: import qrcode from PIL import Image, ImageDraw, ImageFont import osdef generate_custom_qr_code(data, qr_file_path, logo_file_pathNone, textNone):# 创建QRCode对象qr qrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRE…

Qt 各版本选择

嵌入式推荐用 Qt4.8,打包的程序小:Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的 最后支持xp系统的长期支持版本:Qt5.6.3;Qt5.7.0是最后支持xp系统的非长期支持版本。 最后提供mysql数据库插件的版本&#xf…

【机器学习:十五、神经网络的编译和训练】

1. TensorFlow实现代码 TensorFlow 是深度学习中最为广泛使用的框架之一,提供了灵活的接口来构建、编译和训练神经网络。以下是实现神经网络的一个完整代码示例,以“手写数字识别”为例: import tensorflow as tf from tensorflow.keras im…

自动驾驶ADAS算法--测试工程环境搭建

测试环境 1、vs2022社区版本 2、onnx 3、opencv455 测试环境搭建和需要的文件下载 通过网盘分享的文件:附件 链接: https://pan.baidu.com/s/1F79g66nKa1jKoeeuY2Iygg 提取码: xwy8 环境搭建和配置 下载上述的文件并解压,解压后打开工程配置工程…

Vue 页面布局组件-Vuetify、Semantic

在现代 Web 开发中,用户体验是关键,尤其是当我们利用 Vue.js 框架构建用户友好的界面时。今天,我们将深入探讨如何使用 Vuetify 和 Semantic UI 来创建高效、美观的页面布局组件。通过这项技术,你将能够为用户呈现一个流畅的交互体…

Git的基本命令以及其原理(公司小白学习)

从 Git 配置、代码提交与远端同步三部分展开,重点讲解 Git 命令使用方式及基本原理。 了解这些并不是为了让我们掌握,会自己写版本控制器,更多的是方便大家查找BUG,解决BUG ,这就和八股文一样,大多数都用…