Java中 List、Set、Map 之间的区别

一、List(列表)

List的元素以线性方式存储,可以存放重复对象,List主要有以下两个实现类:

ArrayList : 长度可变的数组,可以对元素进行随机的访问,向ArrayList中插入与删除元素的速度慢。 JDK8 中ArrayList扩容的实现是通过grow()方法里使用语句newCapacity = oldCapacity + (oldCapacity >> 1)(即1.5倍扩容)计算容量,然后调用Arrays.copyof()方法进行对原数组进行复制。
LinkedList: 采用链表数据结构,插入和删除速度快,但访问速度慢。

二、Set(集合)

Set中的对象不按特定(HashCode)的方式排序,并且没有重复对象,Set主要有以下两个实现类:

HashSet: HashSet按照哈希算法来存取集合中的对象,存取速度比较快。当HashSet中的元素个数超过数组大小*loadFactor(默认值为0.75)时,就会进行近似两倍扩容(newCapacity = (oldCapacity << 1) + 1)。
TreeSet :TreeSet实现了SortedSet接口,能够对集合中的对象进行排序。

三、Map(映射)

Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一个键对象和值对象。 Map主要有以下两个实现类:

HashMap:HashMap基于散列表实现,其插入和查询

Original: https://www.cnblogs.com/interdrp/p/16516133.html
Author: 锐洋智能
Title: Java中 List、Set、Map 之间的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/538672/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Kubernetes Service 类型介绍与对应使用场景

    Kubernetes Service 类型介绍与对应使用场景 原文链接:https://www.modb.pro/db/173697注⚠️:本人记录仅为谨防优质内容迁移或丢失, 今…

    Java 2023年6月7日
    086
  • 重要的不是写代码,而是读代码

    读代码是一种有益的精进方式,类似与阅读和写作,从范文得以借鉴 读代码的过程中,值得重点关注的部分 被反复使用的代码 穿越时间的代码 – 如果一段代码被使用了很久都没有被…

    Java 2023年6月15日
    078
  • 大厂算法和数据结构解析《大厂学院已结》

    由于不必须按顺序存储,链表在插入的时候可以达到 O(1)的复杂度,比另一种线性表 —— 顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要 O(n) 的时间,而顺序表相应的…

    Java 2023年6月7日
    097
  • JSON学习笔记

    json 是一种轻量级(相对于XML)的数据交换格式。通俗的讲,json就是一种特定的格式。 JSON的使用 json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起…

    Java 2023年6月8日
    063
  • Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于 内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件,它是「 Remote Dictionary …

    Java 2023年6月15日
    081
  • 教学日志:javaSE-面向对象1

    对象,类,属性,方法的理解 package com.tengxun.class6.oop1; /** * @Auther: Yu Panpan * @Date: 2021/12/7…

    Java 2023年6月5日
    0105
  • 一文搞懂Zookeeper原理

    一.概述 ZooKeeper 是什么? 是一个开源的分布式协调服务。使用分布式系统就无法避免对节点管理的问题(需要实时感知节点的状态、对节点进行统一管理等等),而由于这些问题处理起…

    Java 2023年6月7日
    083
  • ReadWriteLock 接口详解

    ReadWriteLock 接口详解 这是本人阅读ReadWriteLock接口源码的注释后,写出的一篇知识分享博客 读写锁的成分是什么? 读锁 Lock readLock(); …

    Java 2023年6月5日
    093
  • 栈和队列

    写在前面 栈和队列,也属于线性表,因为它们也都用于存储逻辑关系为 “一对一” 的数据。使用栈结构存储数据,讲究 先进后出,即最先进栈的数据,最后出栈;使用队…

    Java 2023年6月5日
    068
  • Bean的作用域

    Spring容器创建的Bean默认是单例的。Spring容器调用配置方法完成Bean的创建之后,Bean就缓存在Spring容器里。之后每次调用同一配置方法创建Bean,Sprin…

    Java 2023年6月5日
    0111
  • 分布式锁实现方案最全解读

    前言 对多线程有所了解的朋友一般都会熟悉一个概念:锁。 在多线程并发场景下,要保证在同一时刻只有一个线程可以操作某个业务、数据或者变量,通常需要使用加锁机制。比如 synchron…

    Java 2023年6月7日
    088
  • 设计模式之代理模式(Proxy Pattern)

    1.1、介绍 代理模式(Proxy Pattern)给某一个对象提供一个代理,并由代理对象控制原对象的引用。代理对象在客户端和目标对象之间起到中介作用 。 代理模式是常用的结构型设…

    Java 2023年6月7日
    078
  • Kotlin学习快速入门(9)—— 密封类的使用

    原文地址: Kotlin学习快速入门(9)—— 密封类的使用 – Stars-One的杂货小窝 代码逻辑中,很多时候我们会需要分支语句,来根据数据的情况走不同的处理逻辑…

    Java 2023年6月13日
    0117
  • 设计模式

    设计模式 工厂模式 public class Test { public static void main(String[] args) { Computer c1 =Comput…

    Java 2023年6月9日
    078
  • day04-2发送文件

    多用户即时通讯系统04 4.编码实现03 4.6功能实现-发送文件功能实现 4.6.1思路分析 客户端(发送者): 先把文件a.jpg读取到客户端的字节数组 把文件对应的字节数组封…

    Java 2023年6月15日
    092
  • Grafana 安装

    环境 CentOS 8 1. 安装 sudo nano /etc/yum.repos.d/grafana.repo 写入配置 [grafana] name=grafana base…

    Java 2023年6月9日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球