




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java集合框架是Java编程语言的基础,也是Java面试中非常重要的知识点。在这里,我列出了一些关于Java集合的重要问题和答案。1.Java大会的框架是什么?一些聚合框架的优势是什么?每种编程语言中都有集合。最初的Java版本号包括几个集合类:向量、堆栈、哈希表和数组。随着收藏品的广泛使用。Java1.2提出了一个集合框架,包括所有的集合接口、实现和算法。Java长期以来一直使用泛型和并发集合类,同时确保线程安全。它还包括阻塞接口及其在Java并发契约中的实现。聚合框架的一些优势包括:(1)使用核心集合类来降低开发成本,而不是实现我们自己的集合类。(2)使用经过严格测试的聚合框架类。代码质量将得到提高。(3)代码维护的成本可以通过使用附加到JDK的收集类来降低。(4)可重用性和可操作性。2.泛型在集合框架中的优势是什么?Java1.5引入了泛型。所有集合接口和实现都广泛使用它。泛型同意我们为集合提供一种可以容纳的对象类型,所以。假设您添加了任何其他类型的元素,它将在编译时报告一个错误。这避免了在执行过程中出现ClassCastException。因为您将在编译时收到错误消息。泛型也使代码简洁,我们不需要使用显式转换和操作符实例。这也给执行带来了好处。因为不会生成用于类型检查的字节码指令。3.Java聚合框架的基本接口是什么?o集合是集合级别的根接口。集合表示一组对象。这些对象是它的元素。Java平台不提供这个接口的任何直接实现。集合是不能包含重复元素的集合。这个接口模拟了数学集合的抽象。用来代表一套,像一副牌。o列表是有序集。可以包含重复元素。您可以通过索引访问任何元素。列表更像是一个动态长度转换的数组。映射是一个将键映射到值的对象。映射不能包含重复的键:每个键最多只能映射一个值。其他一些接口是队列、出列、排序集、排序映射和列表迭代器。4.为什么集合不从可克隆和可序列化接口继承?集合接口指定一组对象,它们是集合的元素。如何维护这些元素取决于Collection的详细实现。例如。某些集合实现(如列表)同意重复元素。而其他人,如Set,则不同意。许多集合实现都有一个公共克隆方法。然而。将它放入集合的所有实现中也是没有意义的。这是因为集合是一个抽象的表示。重要的是要意识到。当处理详细的实现时,克隆或序列化的语义和意义只起作用。因此,详细的实现应该决定如何克隆或序列化它,或者是否可以克隆或序列化它。在所有实现中授权克隆和序列化最终会导致灵活性降低和许多其他限制。特定的实现应该决定它是否可以被克隆和序列化。5.为什么地图接口不继承集合接口?尽管地图接口及其实现也是聚合框架的一部分。但是地图不是一个集合。该集合也不是地图。因此,地图继承集合是没有意义的,反之亦然。假设映射继承了集合接口,那么元素会去哪里?Map包含一个键-值对,它提供了一种提取一组键或值列表的方法,但是它不适合“对象集”规范。什么是6。迭代器?迭代器接口提供了一个遍历任何集合的接口。我们可以使用迭代器方法从集合中获取迭代器实例。迭代器取代了Java集合框架中的枚举。迭代器允许调用方在迭代过程中移除元素。7有什么区别?枚举和迭代器接口?枚举的速度是迭代器的两倍,占用的内存更少。枚举非常基本,并且满足基本要求。然而,迭代器比枚举更安全,因为当一个集合被遍历时。它将阻止其他线程更改集合。迭代器取代了Java集合框架中的枚举。迭代器允许调用方从集合中移除元素,而枚举不能。为了使它的功能更清晰,迭代器方法名已经得到了改进。8.为什么没有迭代器. add()这样的方法。向集合中添加元素?语义模糊。众所周知,迭代器的协议不能保证迭代的顺序。然而,应该注意。ListIterator不提供添加操作,这保证了迭代的顺序。9.为什么迭代器没有办法直接得到下一个元素?不移动光标?它可以在当前迭代器的顶层实现。然而,它很少被使用。假设它被添加到接口,每个继承必须实现它。这毫无意义。10之间有什么区别?迭代程序和列表迭代程序?(1)我们可以使用迭代器遍历集合和列表集合,而列表迭代器只能遍历列表。(2)迭代器只能向前遍历。而列表迭代器可以双向遍历。(3)ListIterator从迭代器接口继承,然后添加一些额外的函数,如添加一个元素、替换一个元素、获取前一个或后一个元素的索引位置。*11.遍历列表有哪些不同的方法?列表列表=新数组列表();/使用for-each循环用于(字符串对象:列表)System.out.println(obj)。/使用迭代器迭代器它=StRList . iterator();while(it.hasNext()字符串obj=it . next();System.out.println(obj)。使用迭代器更安全。因为它可以确保当当前遍历的集合元素被更改时。它抛出一个并发异常。12.通过迭代器的快速失效属性,你清楚什么?每次我们试图获取下一个元素时,迭代器的fail-fast属性都会检查当前集合结构中的任何更改。假设我们发现无论我们做什么改变。它抛出一个并发异常。集合中的所有迭代器实现都是根据快速失效设计的(除了并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList)。13 .快速失效和自动失效有什么区别?迭代器的fail-fast属性适用于当前集合,因此它不会受到集合中任何更改的影响。Java.util包中的所有集合类都设计为快速失效。java.util.concurrent中的集合类都是故障安全的。快速失效迭代器抛出ConcurrentModificationException,而安全失效迭代器从不抛出ConcurrentModificationException。14.当迭代一个集合时,如何避免并发?当遍历集合时,我们可以使用并发集合类来避免并发异常,例如CopyOnWriteArrayList。不是数组列表。15.为什么迭代器接口没有详细实现?迭代器接口定义了遍历集合的方法。但是它的实现是集体实现类的责任。每个可以返回迭代器进行遍历的集合类都有自己的迭代器实现内部类。这允许集合类选择迭代器是快速失效还是安全失效。例如,数组列表迭代器是快速失效的。CopyOnWriteArrayList迭代器是故障安全的。16.什么是不支持操作例外?UnsupportedOperationException是一个异常,用于指示不支持该操作。它在JDK课堂上被广泛使用。Java。Util。收藏。未修改的集合将在所有添加和删除操作中引发此异常。17.哈希映射在Java中是如何工作的?哈希映射在映射中存储键值对。入口静态内部类实现。哈希映射使用哈希算法。在put和get方法中。它使用hashCode()和equals()方法。当我们通过传递键值对来调用put方法时。HashMap使用键hashCode()和哈希算法来查找存储键值对的索引。条目存储在链接表中,因此假设条目存在。它使用equals()方法来检查传递的密钥是否已经存在。假设它存在,它会覆盖值。假设它不存在。它创建一个新条目并保存它。当我们通过传递键来调用get方法时,它再次使用hashCode()来查找数组中的索引,然后使用equals()方法来查找正确的条目,然后返回它的值。下图解释了细节。关于哈希映射的其他重要问题是容量、负载因子和阈值调整。HashMap的默认初始容量是32,负载系数是0.75。阈值是负载系数乘以容量。每当我们试图添加一个条目时,假设映射的大小大于阈值,HashMap将再次散列映射的内容。并且使用了更大的容量。容量总是2的幂。假设您知道需要存储大量的键值对,例如缓存从数据库中提取的数据。用正确的容量和负载系数初始化HashMap是个好主意。18.hashcode()和equals()方法的重要性是什么?HashMap使用键对象的hashCode()和equals()方法来确定键值对的索引。当我们试图从HashMap中获取值时,也使用这些方法。假设这些方法没有正确实现,在这种情况下,两个不同的键可能产生相同的hashCode()和equals()输出,HashMap会认为它们是相同的,然后覆盖它们。而不是把它们存放在不同的地方。同样,所有不同意存储重复数据的集合类都使用hashCode()和equals()来查找重复数据。因此,正确认识它们是非常重要的。equals()和hashCode()的实现应该遵循以下规则:(1)假设o1 .等于(o2),o1.hashCode()=o2.hashCode()始终为真。(2)假设o1.hashCode()=o2.hashCode()。这并不意味着o1.equals(o2)为真。19.我们可以用任何一个类作为地图的关键字吗?我们可以使用任何类作为映射的关键字,但是在使用它们之前,我们必须考虑以下几点:(1)假设类重写了equals()方法。它还应该重写hashCode()方法。(2)类的所有实例必须遵循与equals()和hashCode()相关的规则。请参考前面提到的这些规则。(3)假设一个类不使用equals(),那么就不应该在hashCode()中使用它。(4)用户定义键类的最佳实践是使它不可变。这样,可以缓存hashCode()值以获得更好的性能。不变类还可以确保hashCode()和equals()将来不会改变,从而解决了与可变性相关的问题。例如,我在HashMap中使用了一个类MyKey。/传递给我的密钥的名称参数用在equals()和hashCode()中我的密钥=新的我的密钥(Pankaj);/假设哈希码=1234myHashMap.put(键,值);/下面的代码将更改键的hashCode()和equals()值key . SetName(Amit);/假设新散列码=7890/null将在下面返回,因为HashMap将尝试查找存储相同索引的键。密钥已更改,匹配失败,返回null。myHashMap.get(新的MyKey(Pankaj);这就是为什么字符串和整数被广泛用作哈希映射键。20.地图界面提供了哪些不同的收集视图?地图界面提供了三种收集视图:(1)设置键集():返回地图中包含的所有键的集合视图。地图支持集合,地图更改
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂消防安全教育培训
- 2024年昆明幼儿师范高等专科学校辅导员考试真题
- 机务英语培训课件
- 2024年北京航空航天大学国际创新学院行政人员招聘考试真题
- 2024年北京首都经济贸易大学招聘真题
- 促销员培训课件
- 智能物流技术专业教学标准(高等职业教育专科)2025修订
- 工厂订单流程管理
- 未来教育计算机二级第八套
- 子宫内膜增生超声诊断与评估
- 小学劳动教育校本课程开发实践与研究
- 森林草原防火 无人机巡查技术规范 编制说明
- 2025-2030中国发泡聚苯乙烯泡沫行业市场现状供需分析及投资评估规划分析研究报告
- 不寐的中医护理常规
- 《能源的科普讲解》课件
- 天一大联考·天一小高考2024-2025学年(下)高三第四次考试政治试题及答案
- 2025年安庆桐城经开区建设投资集团有限公司招聘12人笔试参考题库附带答案详解
- 2025-2030中国药食同源行业市场运行分析及市场前景预测研究报告
- 2024年杭州地铁科技有限公司招聘笔试真题
- 诊所托管合同协议
- 餐饮服务与管理课件 菜单的设计与制作
评论
0/150
提交评论