Java教程

Java Collection集合面试题

  1. Java集合Collection框架是什么?列出集合框架的一些好处?
    在每一种编程语言都有集合的使用,最初的Java版本包含了几类集合:向量,堆栈,哈希表,数组。但在更大的范围使用是在Java 1.2中集合框架想出了该组的所有集合接口,实现和算法。 Java集合的线程安全操作和使用泛型和并发集合类等。它还包括阻塞的接口及其实现在Java并发包。
    集合框架的好处是:
    使用核心集合类,而不需要实现我们自己的集合类,减少了开发工作。
    使用经过测试的集合框架类提高代码质量。
    使用JDK附带的集合类减少代码维护的工作。
    可重用性和互操作性

  2. 泛型集合框架的好处是什么呢?
    Java 1.5中附带泛型和所有收集接口和接口实现的大量使用。泛型允许我们提供一个集合可以包含Object类型,所以如果你尝试添加任何其他类型的元素,它会引发编译时错误。这就避免了在运行时抛出,因为你会得到编译错误。泛型使代码更干净,因为我们并不需要使用溯型casting和instanceof检查。它也增加了运行时的好处,因为不生成的做类型检查字节码指令。

  3. Java集合框架的基本接口是什么?
    Collection是集合层次的根。一个集合包含一组对象作为其元素。 Java平台不提供任何直接实现这个接口。
    Set 是一个不能包含重复的元素的集合。此接口模型代表数学Set的抽象,用来代表一组Set,如一副扑克牌。
    List是有序集合,可以包含重复的元素。您可以从它的索引访问任何元素。更像是动态长度的数组列表。
    一个Map是一个键映射值的对象。一个Map不能包含重复键:每个key只能映射一个值。
    其他一些接口Queue, Dequeue, Iterator, SortedSet,SortedMap的和listIterator。

  4. 为什么要集合不能继承Cloneable和Serializable接口?
    Collection接口指定一组称为元素的对象。元素如何被组织取决于具体实现。例如,一些LIST实现允许重复的元素,而SET不允许。Collection是一种抽象表示,而克隆和序列化重在执行,应该是在Collection具体实现子类中根据具体元素组织情况来实现。因此,强制在所有实现都要有克隆和序列化是不够灵活的,具有限制性。

  5. 为什么MAP接口不实现Collection接口?
    虽然Map接口和它的实现是集合框架的一部分,但是MAP不是集合,而且集合也不是地图。因此,它实现集合接口没有任何意义。

  6. Iterator是什么?
    Iterator接口提供遍历集合的方法。从一个集合中使用迭代方法,我们可以得到迭代器实例。迭代器允许呼叫者在迭代过程中从集合中删除元素。

  7. 枚举Enumeration 和Iterator接口之间的差异是什么?
    枚举是快迭代两倍,使用非常少的内存。枚举适合基本需求。但Iterator是更安全,因为它总是拒绝其他线程修改它正在迭代集合中的对象。

  8. 为什么没有方法像Iterator.add()将元素添加到集合?
    这是语义不清,对于迭代一个集合,必须保证迭代的顺序。但是请注意,ListIterator确实提供了一个add的操作,而且它保证迭代的顺序。

  9. 为什么迭代器没有不用移动光标来直接获得下一个元素的方法?
    它可以基于当前Iterator接口之上实现,但很少使用,没有意义。

  10. Iterator和listIterator之间有什么不同?
    我们可以使用迭代器Iterator遍历Set和List集合,而ListIterator只可以使用List。
    迭代器遍历只有向前的方向,而ListIterator可以用来在两个方向遍历。
    ListIterator继承Iterator接口,并配备了额外的功能,如添加元素,更换一个元素,能获得上一个和下一个元素的索引位置。

下页

Java集合Collection使用概述

Java多线程面试题

Spring面试题

Struts2面试题