广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >java集合的区别面试题目
  • 309
分享到

java集合的区别面试题目

java面试题java 2014-07-02 23:07:43 309人浏览 才女
摘要

HashMap 和 Hashtable 有什么区别?HashMap 和 Hashtable 都实现了 Map 接口,因此很多特性非常相似。但是,他们有以下不同点: HashMap 允许键和值是 null,而 Hashtable 不允许键或者

HashMap 和 Hashtable 有什么区别?

HashMap 和 Hashtable 都实现了 Map 接口,因此很多特性非常相似。但是,他们有以下不同点: HashMap 允许键和值是 null,而 Hashtable 不允许键或者值是 null。 (推荐学习:java面试题目)

Hashtable 是同步的,而 HashMap 不是。因此, HashMap 更适合于单线程环境,而 Hashtable 适合于多线程环境。

HashMap 提供了可供应用迭代的键的集合,因此,HashMap 是快速失败的。另一方面,Hashtable 提供了对键的列举(Enumeration)。

一般认为 Hashtable 是一个遗留的类。

数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是 ArrayList?

下面列出了 Array 和 ArrayList 的不同点:

Array 可以包含基本类型和对象类型,ArrayList 只能包含对象类型。

Array 大小是固定的,ArrayList 的大小是动态变化的。

ArrayList 提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

ArrayList 和 LinkedList 有什么区别?

ArrayList 和 LinkedList 都实现了 List 接口,他们有以下的不同点:

ArrayList 是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList 是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。

相对于 ArrayList,LinkedList 的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。

LinkedList 比 ArrayList 更占内存,因为 LinkedList 为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

也可以参考 ArrayList vs. LinkedList。

Comparable 和Comparator 接口是干什么的?列出它们的区别。

Java 提供了只包含一个 compareTo() 方法的 Comparable 接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Java 提供了包含 compare() 和 equals() 两个方法的 Comparator 接口。compare() 方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。

equals() 方法需要一个对象作为参数,它用来决定输入参数是否和 comparator 相等。只有当输入参数也是一个 comparator 并且输入参数和当前 comparator 的排序结果是相同的时候,这个方法才返回 true。

HashSet 和 TreeSet 有什么区别?

HashSet 是由一个 hash 表来实现的,因此,它的元素是无序的。add(),remove(),contains()方法的时间复杂度是 O(1)。

另一方面,TreeSet 是由一个树形的结构来实现的,它里面的元素是有序的。因此,add(),remove(),contains() 方法的时间复杂度是 O(logn)。

HashMap 和 ConcurrentHashMap 的区别?

ConcurrentHashMap 是线程安全的 HashMap 的实现。主要区别如下:

ConcurrentHashMap 对整个桶数组进行了分割分段(Segment),然后在每一个分段上都用 lock 进行保护,相对 于Hashtable 的 syn 关键字锁的粒度更精细了一些,并发性能更好。而 HashMap 没有锁机制,不是线程安全的。

HashMap 的键值对允许有 null ,但是 ConCurrentHashMap 都不允许

jdk8 之后,ConcurrentHashMap 启用了一种全新的方式实现,利用 CAS 算法

List、Set、Map 是否继承自 Collection 接口?

List、Set 是,Map 不是。Map 是键值对映射容器,与 List 和 Set 有明显的区别,而 Set 存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List 是线性结构的容器,适用于按数值索引访问元素的情形。

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

ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引娶元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全),通常性能上较 ArrayList 差。

而 LinkedList 使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,其实对内存的利用率更高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

Vector 属于遗留容器(早期的 JDK 中使用的容器,除此之外 Hashtable、Dictionary、BitSet、Stack、Properties 都是遗留容器),现在已经不推荐使用,但是由于 ArrayList 和 LinkedListed 都是非线程安全的,如果需要多个线程操作同一个容器,那么可以通过工具类 Collections 中的 synchronizedList 方法将其转换成线程安全的容器后再使用(这其实是装潢模式最好的例子,将已有对象传入另一个类的构造器中创建新的对象来增加新功能)。

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

List 是有序的 Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,这类似于 Java 的数组。

Set 是一种不包含重复的元素的 Collection,即任意的两个元素 e1 和 e2 都有e1.equals(e2)=false,Set 最多有一个 null 元素。

Map 接口 :请注意,Map 没有继承 Collection 接口,Map 提供 key 到 value 的映射

--结束END--

本文标题: java集合的区别面试题目

本文链接: https://www.lsjlt.com/news/3651.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java集合的区别面试题目
    HashMap 和 Hashtable 有什么区别?HashMap 和 Hashtable 都实现了 Map 接口,因此很多特性非常相似。但是,他们有以下不同点: HashMap 允许键和值是 null,而 Hashtable 不允许键或者...
    99+
    2014-07-02
    java面试题 java
  • java集合面试题目
    ArrayList和Vector的区别这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并...
    99+
    2022-03-24
    java面试题 java
  • java集合的区别
    集合的之间区别:List、Set、Map的区别 (推荐学习:java课程)List允许存重复对象,有序的,可以插入多个null元素Set不允许重复对象,无序的,只允许一个null元素Map是键值对存储数据,键是唯一的,可以...
    99+
    2021-01-31
    java入门 java
  • JAVA集合篇的面试题有哪些
    这篇文章主要讲解了“JAVA集合篇的面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JAVA集合篇的面试题有哪些”吧!1.Java集合框架是什么?说出一些集合框架的优点?每种编程语...
    99+
    2023-06-02
  • 有哪些关于Java集合的面试题
    本篇内容主要讲解“有哪些关于Java集合的面试题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些关于Java集合的面试题”吧!HashMap和HashTable有何不同?  (1)HashM...
    99+
    2023-06-02
  • Java集合面试题看这篇就够了
    备战实习,会定期的总结常考的面试题,大家一起加油! 🎯 往期文章: 【面试题】计算机网络篇-10道常见面试题p1【面试题】JVM篇-10道常见面试题p1【面试题】Java并发篇-...
    99+
    2023-08-31
    java 面试 经验分享 集合
  • JAVA面试题之Forward与Redirect的区别详解
    前言当用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(...
    99+
    2023-05-31
    java redirect forward
  • java集合与数组的区别
    数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同。(推荐学习:java课程)当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现...
    99+
    2020-07-07
    java教程 java
  • Java集合面试问题和答案有哪些
    这篇文章主要讲解了“Java集合面试问题和答案有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java集合面试问题和答案有哪些”吧!1.Java集合框架是什么?说出一些集合框架的优点?每...
    99+
    2023-06-17
  • Java集合框架的面试题及答案有哪些
    这篇文章主要介绍“Java集合框架的面试题及答案有哪些”,在日常操作中,相信很多人在Java集合框架的面试题及答案有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java集合框架的面试题及答案有哪些”的疑...
    99+
    2023-06-17
  • Java集合类框架常见的面试题有哪些
    这篇文章主要介绍“Java集合类框架常见的面试题有哪些”,在日常操作中,相信很多人在Java集合类框架常见的面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java集合类框架常见的面试题有哪些”的疑...
    99+
    2023-06-02
  • Java的基础面试题目(2)
    11、是否可以从一个static方法内部发出对非static方法的调用?不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。 ...
    99+
    2019-02-27
    java面试题 Java
  • Java的基础面试题目(1)
    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 (推荐学习:java面试题目)2、Java有没有goto java中的...
    99+
    2016-11-11
    java面试题 Java
  • Java的基础面试题目(3)
    String s = new String("xyz");创建了几个StringObject?是否可以继承String类两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那...
    99+
    2018-01-28
    java面试题 Java
  • Java的基础面试题目(4)
    a.hashCode() 有什么用?与 a.equals(b) 有什么关系?hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它...
    99+
    2020-03-09
    java面试题 Java
  • Python必考的5道面试题集合
    1、使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100的和 #方法一 #从2开始计算 i = 2 #定义一个变量用于保存结果 sum=0 while i...
    99+
    2022-11-11
  • Java面试题冲刺第三天--集合框架篇
    目录面试题1:对比 Vector、ArrayList、LinkedList 有何区别?适合在什么场景下使用正经回答:深入追问:追问1:多线程场景下就不能使用ArrayList么?追问...
    99+
    2022-11-12
  • Java程序员集合框架面试题有哪些
    本篇内容主要讲解“Java程序员集合框架面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java程序员集合框架面试题有哪些”吧!1、 什么是Java集合APIJava集合框架API是用...
    99+
    2023-06-17
  • java中集合的区别是什么?
    java中集合的区别是什么?在java中集合主要分为:List,Set,Map三种,其中List与Set是继承自Collection,而Map不是。List与Set的区别:List中的元素有存放顺序,并且可以存放重复元素,检索效率高,插入删...
    99+
    2014-12-16
    java教程 java 集合
  • Java牛客网社区项目——知识点&面试题
    Java牛客网社区项目——知识点&面试题 请简要介绍一下你的项目? 这个项目的整体结构来源于牛客网,主要使用了Springboot、Mybatis、MySQL、Redis、Kafka等工具。主要实现了...
    99+
    2023-10-05
    java mybatis spring boot kafka maven
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作