首页 > 编程语言 >说说你知道哪些Java集合吧

说说你知道哪些Java集合吧

时间:2023-09-02 11:32:14浏览次数:42  
标签:Java HashMap 哪些 实现 Object 链表 数组 集合 LinkedHashMap

alt

Java集合,主要由两大接口派生而来

一个是Collection接口,主要用于存放单一元素;下面有三个主要的子接口,List、Set、Queue。

  • List实现类主要有ArrayList、LinkedList、Vector、Stack
  • Set实现类主要是HashSet、LinkedHashSet、TreeSet
  • Queue主要是实现类有ArrayDeque、PriorityQueue

另一个是Map接口,用于存放键值对。主要实现类有Hashtable、HashMap、LinkedHashMap、TreeMap。

集合框架底层数据结构

List

  • ArrayListObject[] 数组
  • VectorObject[] 数组
  • LinkedList:双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)

Set

  • HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素
  • LinkedHashSet: LinkedHashSetHashSet 的子类,并且其内部是通过 LinkedHashMap 来实现的。有点类似于我们之前说的 LinkedHashMap 其内部是基于 HashMap 实现一样,不过还是有一点点区别的
  • TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树)

Queue

  • PriorityQueue: Object[] 数组来实现二叉堆
  • ArrayQueue: Object[] 数组 + 双指针

Map

  • HashMap:JDK1.8 之前 HashMap数组+链表组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间
  • LinkedHashMapLinkedHashMap 继承自 HashMap,所以它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成。另外,LinkedHashMap 在上面结构的基础上,增加了一条双向链表,使得上面的结构可以保持键值对的插入顺序。同时通过对链表进行相应的操作,实现了访问顺序相关逻辑。
  • Hashtable数组+链表组成的,数组是 Hashtable 的主体,链表则是主要为了解决哈希冲突而存在的
  • TreeMap红黑树(自平衡的排序二叉树)

标签:Java,HashMap,哪些,实现,Object,链表,数组,集合,LinkedHashMap
From: https://blog.51cto.com/u_15872442/7331594

相关文章

  • Java List常见面试题
    Java集合面试之List篇你好,面试官|我用JavaList狂怼面试官~(qq.com)本文涉及ArrayList与LinkedList区别、ArrayList扩容机制、CopyOnWriteArrayList特点、场景、思想ArrayList:基于数组实现的非线程安全的集合。实现RandomAccess接口,支持随机访问,查询元素快,插入,......
  • Java入门
    Java初识Java发展史时间节点1991年,Sun公司进军嵌入式开发,让电视、冰箱、微波炉等设备能够用上编程语言,成立了Green项目小组;1992年,由于C++语言的繁琐且不支持跨平台,研发团队基于C++开发了Oak语言;1995年,互联网大爆发,跨平台的特性使得Oak语言得到飞速发展,同时正式更名为Java(爪......
  • android面试题:谈谈对Java中多态的理解
     Java中的多态是面向对象编程的一个重要特征,它允许同一个类型的对象在不同的情况下表现出不同的行为。多态是Java语言中实现代码复用、提高代码可维护性和可扩展性的重要手段。 多态的实现基于两个核心概念:继承和方法重写。在Java中,子类可以继承父类的方法,并且可以重写(覆......
  • 剑指 Offer 48. 最长不含重复字符的子字符串 java
    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入:"abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:"bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入......
  • Cllection--Set集合
    Set集合概述java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Se......
  • java基础-流程控制-day04
    目录1.if单分支2.ifelse多分支3.ifelse双分支4.随机生成一定区间的整数5switch1.if单分支publicclassTestIf01{ publicstaticvoidmain(String[]args){ //对三个数(1-6)求和 intnum1=6; intnum2=6; intnum3=5; intsum=0; sum+=nu......
  • 【2023年下半年Java开发行情预测】
    2023年下半年Java开发行情预测,需要考虑多种因素,包括市场需求、技术发展趋势、人才供需关系等。以下是我对Java开发行情的一些预测:市场需求将继续保持增长:随着数字化转型的加速,许多企业需要将业务迁移到云端,这将导致对Java开发人员的需求增加。此外,Java作为一门流行的编程语言,其需......
  • java拷贝对象列表List copyProperties
    <!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.0.6</version></dependency>/***@Author:Fcx*@Date:2019/11/2020:45*@Versio......
  • java线程的ThreadLocal是线程变量
    java线程的localThread是线程局部变量,只能在线程内访问,方法有getsetremove.证明localThread只能在线程内访问的方法,在control层设置一个ThreadLocal,然后在service可以访问到ThreadLocal设置的值,另外就是浏览器的一次请求就是一个线程的请求.......
  • JavaScript—函数
    函数的概念在js里面,可能会定义非常多的相同代码或功能相似的代码,这些代码需要大量重复地使用。函数就是封装了一段可被重复调用的代码块。通过代码块实现大量代码的重复使用。函数示例//常规方法varsum=0;for(vari=1;i<=100;i++){sum+=......