吊打面试官!Java集合/泛型 24 道题,你能答对多少?
toyiye 2024-09-19 04:49 3 浏览 0 评论
Java集合/泛型面试题
1、ArrayLi st和1 inkedList的区别
2、HashMap和HashT able的区别
3、Collecti on包结构,与Collecti ons的区别
4、泛型常用特点(待补充)
5、说说List, Set, Map三者的区别
6、Arr ay与ArrayList有什么不一样?
7、Map有什么特点
8、集合类存放于Java. util 包中,主要有几种接口
9、什么是1ist接口
10、说说ArrayList (数组)
11、Vector (数组实现、线程同步)
12、说说LinkList (链表)
13、什么Set集合
14、HashSet ( Hash 表)
15、什么是TreeSet (二又树)
16、说说LinlkHashSet ( HashSet+Li ruke aHashMap)
17、HashMap (数组+链表+红黑树)
18、说说Concur entHashMlap
19、HashTable (线程安全)
20、Trellap (可排序)
21、LinHashMap (记录插入顺序)
22、泛型类
23、类型通配符?
24、类型擦除
1、ArrayList和linkedList的区别
Array(数组)是基于索引index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。
Array获取数据的时间复杂度是0(1 ),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据,(因为删除数据以后,需要把后面所有的数据前移)
缺点:数组初始化必须指定初始化的长度否则报错
例如:
int[] a = new int[4];//推荐使用int[]这种方式初始化
int c[] = {23,43, 56,78};//长度: 4,索引范围: [0,3]
List-是一一个有序的集合,可以包含重复的元素, 提供了按索引访问的方式,它继承Collection.
List有两个重要的实现类: ArrayList和LinkedList
ArrayList可以看作是能够自动增长容量的数组
ArrayList的toArray方法返回一-个数组
ArrayList的asList方法返回- -个列表
ArrayList底层的实现是Array,数组扩容实现
LinkList是一一个双链表在添加和删除元素时具有比ArrayList更好的性能但在get与set方面弱于
ArrayLlist.当然这些对比都是指数据量很大或者操作很频繁。
2、HashMap和HashTable的区别
1.两者父类不同
HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable (可复制)、Serializable (可序列化)这三个接口。
2.对外提供的接口不同
Hashtable比HashMap多提供了elments()和contains(两个方法。
elments()方法继承自Hashtable的父类Dictionnary. elements() 方法用于返回此Hashtable中的value的枚举。
contains0方法判断该Hashtable是否包含传入的value.它的作用与containsValue()-致.事实上,contansValue0就只是调用了一下contains0 方法。
3.对null的支持不同
Hashtable : key和value都不能为null.
HashMap : key可以为null ,但是这样的key只能有一个,因为必须保证key的唯-一性;可以有多个key值对应的value为null.
4.安全性不同
HashMap是线程不安全的,在多线程并发的环境下,可能会产生死锁等问题,因此需要开发人员自己处理多线程的安全问题。
Hashtable是线程安全的,它的每个方法上都有synchronized关键字,因此可直接用于多线程中。
虽然HashMap是线程不安全的,但是它的效率远远高于Hashtable ,这样设计是合理的,因为大部分的使用场景都是单线程。当需要多线程操作的时候可以使用线程安全的ConcurrentHashMap.
ConcurrentHashMap.虽然也是线程安全的,但是它的效率比Hashtable要高好多倍。因为ConcurrentHashMap使用了分段锁,并不对整个数据进行锁定。
5、初始容量大小和每次扩充容量大小不同
6、计算hash值的方法不同
3. Collection包结构 ,与Collections的区别
Collection是集合类的上级接口,子接口有Set. List. LinkedList. ArrayLlist. Vector. Stack. Set ;
Colletions是集合类的一个帮助类,它包含有各种有关集合操作的静态多态方法,用于实现对各种集合的搜索、排序.线程安全化等操作。此类不能实例化,就像一 个工具类,服务于Java的Collection框架。
4、泛型常用特点(待补充)
泛型是ava SE 1.5之后的特性,《Java 核心技术》中对泛型的定义是:
“泛型“意味着编写的代码可以被不同类型的对象所重用。
“泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念, 但具体执行的时候却可以有具体的规则来约束,比如我们用的非常多的ArrayList就是个泛型类, ArrayLit作为集合可以存放各种元素,如Integer, String ,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束集合中只存放Integer类型的元素,如
List<Integer> iniData = new ArrayList<()
使用泛型的好处?
以集合来举例,使用泛型的好处是我们不必因为添加元索类型的不同而定义不同类型的集合,如整型集
合类,浮点型集合类,字符串集合类,我们可以定义-一个集合来存放整型、浮点型,字符串型数据,而
这并不是最重要的,因为我们只要把底层存储设置了0bject即可,添加的数据全部都可向上转型为
Object。更重要的是我们可以通过规则按照自己的想法控制存储的数据类型。
5.说说List,Set,Map三者的区别
List对付顺序的好帮手) : List接口存储-组不唯- - (可以有多个元索引用相同的对象) , 有序的对象Set注重独一无二的性质)不允许重复的集合。不会有多个元索引用相同的对象。
Map(用Key来搜索的专):使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。
6、Array与ArrayList有什么不一 样?
Array与ArrayLis都是用来存储数据的集合。ArrayList底层是使用数组实现的 ,但是arrayList对数组进行了封装和功能扩展, 拥有许多原生数组没有的一些功能。我们可以理解成ArrayList是Array的一 个升级版。
这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。
相关推荐
- 为何越来越多的编程语言使用JSON(为什么编程)
-
JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...
- 何时在数据库中使用 JSON(数据库用json格式存储)
-
在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...
- MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)
-
前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...
- JSON对象花样进阶(json格式对象)
-
一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...
- 深入理解 JSON 和 Form-data(json和formdata提交区别)
-
在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...
- JSON 语法(json 语法 priority)
-
JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...
- JSON语法详解(json的语法规则)
-
JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...
- MySQL JSON数据类型操作(mysql的json)
-
概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...
- JSON的数据模式(json数据格式示例)
-
像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...
- 前端学习——JSON格式详解(后端json格式)
-
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...
- 什么是 JSON:详解 JSON 及其优势(什么叫json)
-
现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...
- PostgreSQL JSON 类型:处理结构化数据
-
PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...
- JavaScript:JSON、三种包装类(javascript 包)
-
JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...
- Python数据分析 只要1分钟 教你玩转JSON 全程干货
-
Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...
- 比较一下JSON与XML两种数据格式?(json和xml哪个好)
-
JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- r语言矩阵 (127)
- browsererror (114)
- exportexcel (119)
- cv2.bitwise_not (137)
- dump命令 (128)
- es6concat (126)
- heapify (127)
- java.security.egd (130)
- javax.annotation (117)
- jsstringsplit (117)
- js数字 (115)
- maven编译 (132)
- mysqlleft (128)
- nodejsbuffer (149)
- org.apache.commons.httpclient (126)
- org.jsoup (141)
- org.springframework.web (128)
- robotframework-ride (115)
- setnocounton (141)
- socket.gethostbyname (122)
- sqlmid (121)
- time.strptime (133)
- vscode格式化 (125)
- win32con (129)
- window.localstorage (126)