JAVA基础面试题

JAVA基础面试题


1、请说说Java中的集合类,项目中是怎么使用的?

  1. Java集合主要是Collection接口和Map接口,以及它们的子接口和实现类。
  2. Collection接口下有子接口List和Set。
    1. List接口的实现类主要有ArrayList,Vector,LinkedList。
      1. ArrayList线程不安全,底层实现是一个Object类型的动态数组。存放的元素是有序的,但是可以重复。ArrayList在逻辑上是顺序结构,所以查询速度快,但是对数据的新增和删除效率低。在jdk1.7中,ArrayList的初始化长度是10,jdk1.8中初始化长度为0。当需要扩容时,是按照原长度的1.5倍进行扩容的。扩容时会复制旧的数据到新的数组中,并将引用指向新的数组。
      2. Vector是线程安全的容器。Vector里面的方法都用synchronized关键字修饰的。底层实现上也是一个Object类型的数组,初始化长度为10,扩容时按照2倍进行扩容。
      3. LinkedList实现上双向链表。存放数据时是包装成节点对象存储的,一个节点中除了存放元素之外,还有两个分别指向前一个节点和后一个节点的指针,所以对于LinkedList而言遍历查询效率低,但是对于插入和删除的效率高。
    2. Set接口的实现类主要有HashSet,TreeSet,LinkedHashSet,这三个都是线程不安全的。
      1. HashSet存放的元素是唯一且无序的,无序指的是存放元素时不会按照输入的顺序存放,遍历时也不会按照升序或者降序来排列。底层实现上是哈希表,这样就要求存放的元素必须重写equals和hashCode方法。
      2. LinkedHashSet继承了HashSet,存放的元素是唯一且有序的,这个有序指的是存放元素时按照输入的顺序。在底层的实现上除了哈希表之外,还维护了一个元素的顺序链表,这个链表将存放的元素按照存放顺序链接起来。
      3. TreeSet(底层是红黑树)存放的元素是唯一有序的。这个有序指的是进行遍历时会按照二叉树的遍历方式进行排序。二叉树本来就是有序的,怎么保证存放的元素时有序的呢?要求存放的元素必须实现内部比较器接口Comparable接口并实现compareTo方法或者实现外部比较器接口Comparator,并重写compare方法。
    3. Map接口的主要实现有:HashTable,HashMap,TreeMap。其中HashTable是线程安全的,HashMap和TreeMap是线程不安全的。
      1. HashTable使用时不能存放值为Null的key,但是HashMap可以存放,且只能存放一个。
      2. HashMap按照键值对的方式存储数据。底层实现是数组+链表,对于存放的key而言必须重写hashCode方法和equals方法。
      3. LinkedHashMap是HashMap的子类,在实现上还维护了一个元素的顺序链表,链表将存放的元素按照顺序链接起来。
      4. TreeMap
posted @   骑马观花  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示

目录导航