啊涛JAVA面试题二(Java中的集合类有哪些?如何分类的?)

103 阅读2分钟

Java中的集合类(Collections)是一个重要的组成部分,用于存储和操作对象。它们大致可以分为两个主要类型:List和Set,每个类型都有其独特的子类和特性。

  1. List(列表) :List接口及其实现类表示一个有序的集合,可以包含重复的元素。主要的List实现类有:

    • ArrayList:基于动态数组实现,查询效率高,插入和删除操作可能会涉及到数据的移动,所以效率相对较低。
    • LinkedList:基于双向链表实现,插入和删除操作效率高,但查询效率相对较低。
    • Vector:一个同步的ArrayList,由于其线程安全性,所以性能较低。
    • Stack:继承自Vector,表示一个后入先出(LIFO)的集合。
  2. Set(集合) :Set接口及其实现类表示一个无序的集合,不能包含重复的元素。主要的Set实现类有:

    • HashSet:基于HashMap实现,元素的无序性取决于HashMap的散列函数。
    • TreeSet:基于红黑树实现,元素自动按照升序排序。
    • LinkedHashSet:一个带有插入顺序的HashSet,使用LinkedHashMap来实现。

此外,还有一些其他的集合类,如:

  • Queue:一个特殊的集合,表示一个队列,元素按照先进先出(FIFO)的原则进行排序。主要的Queue实现类有LinkedListPriorityQueue等。
  • Map:Map接口及其实现类用于存储键值对,每个键唯一对应一个值。主要的Map实现类有HashMapTreeMapLinkedHashMap等。

分类

Java中的集合类可以根据元素的排序方式、是否允许重复、是否同步等特性进行分类。

  • 根据元素的排序方式:分为有序集合(如List和TreeSet)和无序集合(如HashSet和LinkedHashSet)。
  • 根据是否允许重复:分为允许重复的集合(如List和Map)和不允许重复的集合(如Set)。
  • 根据是否同步:分为同步集合(如Vector和Hashtable)和非同步集合(如ArrayList和HashMap)。同步集合在多线程环境下更安全,但性能较低。