当前位置: 首页 > news >正文

java中容器试题_Java最常见208道面试题_容器

18.java 容器都有哪些?ef4d6d6167b16ebf539c096c1c798aff.png

19.Collection 和 Collections 有什么区别?

Collection是一个接口,它是Set、List等容器的父接口;Collections是个一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

20.List、Set、Map 之间的区别是什么?329726e53bdf5e7a2ee9b546f1706c1c.png

21.HashMap 和 Hashtable 有什么区别?

(1)HashMap去掉了HashTable的contains方法,但是加上了containsValue() 和containsKey()方法。

(2)HashTable是同步的,而HashMap不是同步的,效率上是比HashTable高

(3)HashMap允许空键值对,HashTable是不允许空键值对的。

22.如何决定使用 HashMap 还是 TreeMap?

因为HashMap的Key值是散列,均匀的,不支持排序。数据结构主要是数组、链表和二黑树。所以HashMap更适合插入、删除和定位元素

TreeMap的key是默认按照升序排序的,所以更适合按照自然顺序或者自定义顺序排序。

23.说一下 HashMap 的实现原理?

详解见上篇文章《手撕HashMap,女朋友再也不用担心我的面试》

24.说一下 HashSet 的实现原理?

HashSet是基于HashMap实现的,HashSet 底层使用HashMap来保存所有元素, 因此HashSet 的实现比较简单,相关HashSet 的操作,基本上都是直接调用底层HashMap的相关方法来完成,HashSet不允许有重复的值,并且元素是无序的。

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

两者最大的区别是ArrayList 是数组方式存储数据,LinkedList 是双向链表实现存储。ArrayList的特点在于数组元素大小大于实际元素存储的数据以便于增加和插入元素。它允许直接按照序号索引元素,但是插入元素涉及到数组元素移动等内存操作,所以索引数据快而插入数据慢。而LinkedList则相反插入速度较快,索引速度较慢

26.如何实现数组和 List 之间的转换?

List转换为数组:ArrayList的toArray()方法。

数组转List:Arrays的asList方法。

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

最大区别在于Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。

28.Array 和 ArrayList 有何区别?

两者有以下几个区别:

(1)Array可以容纳基本类型和对象,但是ArrayList只能容纳对象。

(2)Array是指定大小,是固定的。但是ArrayList的大小可以动态指定。

(3)Array不能够随意添加和删除其中项,而ArrayList可以在任何位置随意添加和 删除。

29.在 Queue 中 poll()和 remove()有什么区别?

remove() ,如果队列为空的时候,则会抛出空指针异常。而poll()只会返回null

30.哪些集合类是线程安全的?

vector、statck、hashtable、enumeration

31.迭代器 Iterator 是什么?

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

32.Iterator 怎么使用?有什么特点?

Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。(2) 使用next()获得序列中的下一个元素。(3) 使用hasNext()检查序列中是否还有元素。(4) 使用remove()将迭代器新返回的元素删除。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

33.Iterator 和 ListIterator 有什么区别?

(1)Iterator 可以便利Set和List集合,但是ListIterator只能便利List.

(2) Iterator 只能前向遍历,ListIterator可以向前也可以向后遍历

(3)ListIterator实现了Iterator接口,并且含其它功能,比如:增加元素、替换元素、还有获取前一个还有后一个元素的索引等。

34.怎么确保一个集合不能被修改?

我们可以采用Collections包下的unmodifiableMap方法,通过这个方法返回的map,是不可以修改的。它会报 java.lang.UnsupportedOperationException错

下一期 Java最常见208道面试题_多线程

喜欢的同学可以关注我的微信公众号:Java先生 方便您第一时间阅读

复制代码

相关文章:

  • java 开启线程扫描程序_当多个线程在Java中使用System.in上的扫描仪...
  • java中结构体实现_JAVA中如何实现C中的结构体数组的功能?
  • java nio close_wait_Java NIO 操作总结
  • java zmq订阅_java zmq消息队列
  • java按键数据库添加_详解Java MyBatis 插入数据库返回主键
  • java ee jdbc_JavaEE JDBC 补充注意点
  • java 返回前台excel_Java后台读取excel表格返回至Web前端
  • eclipse for java web_【Javaweb】Eclipse for JavaEE新建的Web工程自动生成web.xml
  • gopython 获取python 全局线程锁失败_python线程互斥锁递归锁死锁
  • java collections 复制_Java公开课|Java Collections类查复制操作是你学习Java的超车途径,还不来看看就晚了...
  • java 线程的移动问题_Spring Boot中的多线程问题和ThreadLocal
  • Java 经常用到access_用Java连接到Microsoft Access 2007数据库的正确方法是什么?
  • java1.8 interface_JDK1.8新特性——FunctionInterface
  • php file_get_contents 中文,php file_get_contents函数怎么用
  • php 平均下载速度,php限制下载速度的实现方法
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Django 博客开发教程 16 - 统计文章阅读量
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JS变量作用域
  • js面向对象
  • MySQL QA
  • nodejs调试方法
  • pdf文件如何在线转换为jpg图片
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 前端面试总结(at, md)
  • 小而合理的前端理论:rscss和rsjs
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​第20课 在Android Native开发中加入新的C++类
  • #《AI中文版》V3 第 1 章 概述
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (HAL库版)freeRTOS移植STMF103
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .Net core 6.0 升8.0
  • .net core使用ef 6
  • .Net 应用中使用dot trace进行性能诊断
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net生成的类,跨工程调用显示注释
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ solr入门 ] - 利用solrJ进行检索
  • [acm算法学习] 后缀数组SA
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ] 2044: 三维导弹拦截
  • [cocos2d-x]关于CC_CALLBACK
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [HEOI2013]ALO
  • [LeetCode 687]最长同值路径
  • [LeetCode][LCR190]加密运算——全加器的实现
  • [linux学习]apt-get参数解析
  • [NISACTF 2022]level-up