面试-Java基础-描述一下Java集合,项目中用到哪些?

这是一个很难回答的面试题,真不知道有哪位仁兄会碰到这种面试题。不过既然看到了这种题目的存在,那就手撕这个题目,如何来回答这个问题呢?

思路:Java集合的组成元素?+ Java集合带来的好处? + Java集合都有哪些具体的实现,每个实现都有什么特点?

集合是用来表示和操作一组相似元素的统一结构。

Java Collections框架是一组可重用的数据结构和算法,旨在让程序员从实现数据结构本身中解放出来,以便他们能够专注于业务逻辑。
Java Collections框架提供了通用的数据结构实现,这些实现对于一般用途(如列表、集合、映射、队列、树等)已经足够了。这些集合具有高性能、高质量、易于使用和非常好的文档。

Java乃至其它语言的集合框架都包含:
接口(interface),实现(implmentations)和 算法(algorithms)。

Java的集合类型

注意,Map不是集合,它没有实现Collection接口。它自己有自己的顶层接口Map, Map的特点和操作和其它集合容器不同,但有点像ListSet

  • List
    • ArrayList: ArrayList是基于数组来实现的。在往数组新增元素时,若ArrayList没有充足的空间,它的大小会被自动扩容。在创建新的ArrayList时,会携带默认的大小,此外,也可以在创建时设定ArrayList的大小。ArrayListsizeIsEmptygetsetiteratorlistIterator时间复杂度为O(1),其它操作的时间复杂度是O(n)。所以,如果我们想要快速的、随机的访问元素,可以选择ArrayList
    • LinkedList: 它实际上一个双向链表。它在链表末尾删除和新增元素时的时间复杂度为O(1),其它方法的时间复杂度都是O(n)。如果需要在链表末尾需要快速的删除或新增时,我们可以选择LinkedList
  • Set
    不允许有重复的元素;
    元素插入的顺序不被保证;
    • HashSet: 它是中性能最好和使用最广泛的实现。它的特征是:不重复和无序。
    • LinkedHashSet:由于链表天生的特性,所以在插入式保留了插入顺序。因此,当你想按顺序存储唯一元素时,可以考虑使用LinkedHashSet
    • TreeSet:它跟据元素的值对其进行排序,或者按照它们的自然顺序,或者按照创建时提供的比较器进行排序。
  • Queue
    Queue是有头(head)有尾(tail)的集合;
    元素从tail放入,从head取出;队列保存了元素插入的顺序;
    • PriorityQueue: 它可以根据元素的自然插入顺序或通过Comparator进行排序。当你希望利用自然插入排序之外,还想让某些元素快速的从head删除,则可以使用PriorityQueue
    • ArrayQueueDeque的简单实现。如果希望利用双端队列的特性而不是基于列表的特性(比LinkedList更简单),请考虑使用ArrayDeque。

你可能感兴趣的:(编程语言)