【面试】Java集合中List,Set以及Map等集合体系详解

news/2024/11/9 12:56:04

转载请注明出处:Java集合中List,Set以及Map等集合体系详解

一、概述

先来上一张 Collection 继承体系的图:

再来上一张 Map 继承体系的图:

由以上两张图可知以下内容:

  • List,Set,Map 都是接口
  • List,Set 继承自 Collection 接口,而 Map 为单独的接口
  • List 子类有 ArrayList,LinkedList,Vector
  • Set 子类有 HashSet,LinkedHashSet,TreeSet
  • Map 子类有 HashMap,TreeMap,HashTable 以及 LinkedHasMap
  • Collection 接口下还有 Queue 接口,有 PriorityQueue 类

二、总结

2.1 Collection接口

2.1.1 List 有序,可重复

  • ArrayList
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程不安全,效率高
  • Vector
    优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程安全,效率低
  • LinkedList
    优点: 底层数据结构是链表,查询慢,增删快。
    缺点: 线程不安全,效率高

2.1.2 Set 无序,唯一

  • HashSet
    底层数据结构是哈希表。(无序,唯一)
    如何来保证元素唯一性? 主要依赖两个方法:hashCode()和equals()
  • TreeSet
    底层数据结构是红黑树。(唯一,有序)
    1. 如何保证元素排序的呢?(自然排序、比较器排序)
    2.如何保证元素唯一性的呢?(根据比较的返回值是否是0来决定)
  • LinkedHashSet
    底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
    1.由链表保证元素有序
    2.由哈希表保证元素唯一

2.2 Map接口

Map接口有三个比较重要的实现类,分别是HashMap、TreeMap和HashTable。

  • TreeMap是有序的,HashMap和HashTable是无序的。
  • Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。

这就意味着:

  • Hashtable是线程安全的,HashMap不是线程安全的。
  • HashMap效率较高,Hashtable效率较低。
  • 如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。 查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。
  • Hashtable不允许null值,HashMap允许null值(key和value都允许)
  • 父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap

完结!


http://www.niftyadmin.cn/n/1993241.html

相关文章

【常用命令】netstat -ano命令图文详细说明

在 Windows 中可以用 netstat 命令显示套接字内容,如下图所示,图中的第一行相当于一个套接字,当创建套接字时,就会在这里增加一行新的控制信息,赋予“即将开始通信”的状态,并进行通信的准备工作&#xff0…

DLL导出变量

DLL导出变量DLL定义的全局变量可以被调用进程访问;DLL也可以访问调用进程的全局数据,我们来看看在应用工程中引用DLL中变量的例子(单击此处下载本工程附件)。/* 文件名:lib.h */#ifndef LIB_H#define LIB_Hextern int…

【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案

本文目录 一、背景描述 二、报错原因 三、解决方案 方案一:把中文目录改成英文即可 方案二:maven --> install 一、背景描述 今天从 Git 上新 checkout 下来一个项目,运行居然报错。由于代码是别人开发的,我刚接手&#…

【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源

本文目录 一、背景描述 二、问题原因 三、解决方案 一、背景描述 由于已出货的产品上印的有APP软件的下载地址(https://www.****.com/a/fwyzc/mrjxz/) 的二维码,而这个下载地址是无法改变的,使用手机扫描这个二维码出现web端的…

新疆吐鲁番葡萄为什么这么甜

新疆吐鲁番葡萄为什么这么甜 主要的是:一是新疆纬度高,日照多,光和作用就充分了。 二是昼夜温差大,有利于糖份的积累。 首先吐鲁番地区的土壤适合葡萄的生长习性,再就是气候:日照时间长,干燥,昼夜温差大.干燥的气候能有效的留住葡萄的糖份(…

【mapstruct】Java 中 mapstruct mapper 转换器部分字段转换无效的解决方案

本文目录 一、背景描述 二、问题原因 原因一:映射的字段不一致 原因2:编译问题 三、解决方案 一、背景描述 springboot 2.1.5 mapstruct 1.3.0.Final maven管理工具 接手一个项目,根据需求需要对其接口进行修改,对于两个实…

【工具使用】SecureCRT的下载、安装图文详细过程介绍

本文目录 一、SecureCRT的介绍 二、SecureCRT的下载 三、SecureCRT的安装 四、SecureCRT的使用 一、SecureCRT的介绍 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。 Secure…

三国志IX修炼统率的方法

三国志9修炼统率的方法 1、统率10: (1)孙子兵法 (统率10 忠诚30 加兵法斗舰) 。通:1-2(孙坚) 3-4(孙策) 5-9(孙权) 10(孙休) 。IF:1-2(孙坚) 3-5(孙策) 6-7(孙权) 8(孙皓) 9(孙权) 10(孙坚) (2)六韬 (统率8 忠诚18 无加兵法) 。通&#…