Java每日5问(第14天)

什么是迭代器(Iterator)?

Iterator 接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代的过程中删除底层集合的元素。
克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此, 应该由集合类的具体实现来决定如何被克隆或者是序列化。

Iterator 和 ListIterator 的区别是什么?

下面列出了他们的区别:
Iterator 可用来遍历 Set 和 List 集合,但是 ListIterator 只能用来遍历 List。Iterator 对集合只能是前向遍历,ListIterator 既可以前向也可以后向。
ListIterator 实现了 Iterator 接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。

Enumeration 接口和 Iterator 接口的区别有哪些?

Enumeration 速度是 Iterator 的 2 倍,同时占用更少的内存。但是, Iterator 远远比Enumeration 安全,因为其他线程不能够修改正在被 iterator 遍历的集合里面的对象。同时,Iterator 允许调用者删除底层集合里面的元素,这对 Enumeration 来说是不可能的。

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

只有List 和Set 接口继承于Collection 接口,Map 是与Collection 并列的接口概念

字符串常量池到底存在于内存空间的哪里?

jdk 6.0 字符串常量池在方法区,方法区的具体体现可以看做是堆中的永久区。
jdk 7.0 java 虚拟机规范中不再声明方法区,字符串常量池存放在堆空间中
jdk 8.0 java 虚拟机规范中又声明了元空间,字符串常量池存放在元空间中

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/106878684