18.Java集合类框架的基本接口有哪些?
官方版
集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。
Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:
Collection:代表一组对象,每一个对象都是它的子元素。
Set:不包含重复元素的Collection。
List:有顺序的collection,并且可以包含重复元素。
Map:可以把键(key)映射到值(value)的对象,键不能重复。

大神版
总共有两大接口:Collection 和Map ,一个元素集合,一个是键值对集合; 其中List和Set接口继承了Collection接口,一个是有序元素集合,一个是无序元素集合; 而ArrayList和 LinkedList 实现了List接口,HashSet实现了Set接口,这几个都比较常用; HashMap 和HashTable实现了Map接口,并且HashTable是线程安全的,但是HashMap性能更好;

java.util.Collection [I]

|—java.util.List [I]|—java.util.ArrayList [C]|—java.util.LinkedList [C]|—java.util.Vector [C]|—java.util.Stack [C]|—java.util.Set [I]|—java.util.HashSet [C]|—java.util.SortedSet [I]|—java.util.TreeSet [C]

java.util.Map [I]

|—java.util.SortedMap [I]|—java.util.TreeMap [C]|—java.util.Hashtable [C]|—java.util.HashMap [C]|—java.util.LinkedHashMap [C]|—java.util.WeakHashMap [C]

19.为什么集合类没有实现Cloneable和Serializable接口?
官方版
克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。

实现序列化的作用
实现Serializable序列化的作用
1.将对象的状态保存在存储媒体中以便可以在以后重写创建出完全相同的副本;
2.按值将对象从一个从一个应用程序域发向另一个应用程序域。
实现 Serializable接口的作用就是可以把对象存到字节流,然后可以恢复。所以你想如果你的对象没有序列化,怎么才能进行网络传输呢?要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化。如果你不需要分布式应用,那就没必要实现实现序列化。

20.什么是迭代器(Iterator)?
官方版
Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的
迭代方法。迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调用集合的
remove(Object Obj)删除,可以通过迭代器的remove()方法删除。

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

Java中的Iterator功能比较简单,并且只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

牛客java面试题总结版(四)相关推荐

  1. 牛客java面试题总结版(三)

    13.概括的解释下线程的几种可用状态. 官方版: 新建( new ):新创建了一个线程对象. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 star ...

  2. 牛客java面试题总结版(二)

    6.Java中的方法覆盖(Overriding)和方法重载(Overload)是什么意思? 官方版:Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况.与此相对,方 ...

  3. 牛客java面试题总结版(一)

    1.什么是Java虚拟机(JVM)?为什么Java被称作是"平台无关的编程语言"? 官方版:Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Jav ...

  4. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

    Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:(          ) A Java反射主要涉及的类如C ...

  5. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  6. 项链(牛客竞赛2020-普及组第四场-T4)

    项链(牛客竞赛2020-普及组第四场-T4) 题目 原题链接 样例 输入1 4 3 4 3 -2 1 1 2 2 3 3 4 输出1 7 1 说明1 第一组样例,最优路径为1→2→3→41 \to 2 ...

  7. 牛客java选择题每日打卡Day17

    牛客java选择题每日打卡Day17

  8. 华为机试在线训练--牛客网(python)第四部分

    华为机试在线训练–牛客网(python) 第四部分(31~40) 第三十一题:[中级]单词倒排 题目描述 对字符串中的所有单词进行倒排. 说明: 1.每个单词是以26个大写或小写英文字母构成: 2.非 ...

  9. 牛客java选择题每日打卡Day5

    牛客java选择题每日打卡Day5

最新文章

  1. java list.add()与list.addAll()方法
  2. 看透 Spring MVC 源代码分析与实践 —— 俯视 Spring MVC
  3. java小程序源码_【小程序源码分享】基于Java开发的物业管理系统!
  4. 史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)
  5. 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
  6. 冬季美食不可少烤肉和火锅,最具诱惑的手绘肉食插画素材,让设计师勾引你的味蕾
  7. 读书笔记 - 《我的美国之路》
  8. 蓝桥练习 之 单词个数统计
  9. javascript的数组形式与php的数组形式
  10. 十大排序算法——插入排序法(C语言)
  11. 【游戏开发教程】Unity iOS平台接入微信SDK,实现微信登录等功能(教程 | 流程讲解)
  12. WPF_界面_图片/界面/文字模糊解决之道整理
  13. hadoop原理巧用到异地机房双活
  14. 硬盘盒刷固件使其不休眠
  15. 小程序上传身份证正反照,竖排照片横向展示
  16. 【人工智能】3.谓词与机器推理
  17. react中使用lazy函数进行路由懒加载
  18. python中级11面向对象中
  19. ros中四元数与欧拉角学习笔记
  20. win10安装SqlServer2014

热门文章

  1. 关于MPLS和SD-WAN的4大误解—Vecloud微云
  2. UltraEdit v18及注册
  3. shell脚本判断输入参数个数
  4. golang数据运算符
  5. Windows 修改hosts文件以及权限问题
  6. CMake结合Visual Studio中开发Qt应用程序注意事项
  7. CLR探索系列:Windbg+SOS动态调试分析托管代码
  8. 第四章,简答题4-5,2017-4-6
  9. Linux关闭防火墙、SELinux
  10. MySQL高性能优化规范建议