集合自序整理集

集合和数组一样都是对多个数据进行存储操作的容器

*
– 集合长度可变,数组长度固定
– 集合可以存储不同数据类型元素,数组只能存储单一数据类型元素
– 集合只能存储引用类型元素,数组既可以存储引用类型元素又可以存储基本类型元素

单例集合,它包含了集合的基本操作和属性,它是List接口和Set接口的父接口

Collection接口通用方法来对集合实现基本操作:

    add():添加元素
    clear():清空元素
    remove():删除元素
    size():元素数量
    toArray():集合转数组
    contains():判断元素是否存在
    isEmpry():判断集合是否为空

在Collection中LIst集合是进入先后有序保存可重复的类型,可对其中每个元素的插入位置进行精准地控制,可以通过索引来访问元素和遍历元素;在List集合中我们常使用到的就是ArrayList集合和LinkedList集合这个两个类

List接口定义的特有基本功能:

    set():把索引查询到位置的元素修改成指定的值,并返回修改前的值
    get():获取指定位置的元素
    indexOf():索引指定元素
    listIterator():列表迭代器
    subList():截取集合

ArrayList集合实现List接口,它得到来LIst集合框架的基础功能;ArrayList集合底层是通过数组来实现的,随着元素的增加而动态扩充;

*
优点:查询快、效率高、可以存储重复值
缺点:增删慢、线程不安全

对于ArrayList来说带有尖括号<>则代表泛型,表示着集合当中所有的元素全都是统一的类型,泛型只能是引用类型而不能是基本类型

在ArrayList集合中存储的指定数据结构都是以对象为单位,所有的数据类型都必须转换成包装类

*

+ 自动装箱:基本类型转换成包装类(int => Integer)
+ 自动拆箱:包装类转换成基本类型(Integer => int)

*

+ ArrayList集合之所以和数组有着相似性功能,是因为ArrayList类内部封装类一个Object类型的数组,在ArrayList集合当中会有很多方法,比如index、indexOf都是在内部数组中调用Array对于的方法

*

+ 频繁的往ArrayList中添加和修改元素都会引起装箱和拆箱操作,会存在影响内部Object数组的效率

*

+ 数组扩容,每当ArrayList集合执行add()操作时,内部数组就会自动检查容量是否足够,容量足够则正常添加元素;容量不够时,数组会以自身容量的两倍来创建一个新的数组,将旧数组中数据存入到新数组,再旧数组丢弃掉;对于这个临界点扩容的操作会存在影响一些效率

LinkedList集合实现了LIst、Deque接口,底层是一个双向链表,属于线性表

*
优点:增删快、允许空值存在、线程安全
缺点:查询慢

&#x521B;&#x5EFA;LinkedList&#x65B9;&#x6CD5;
    LinKedList<string>list = new LinKedList<>();
    &#x6DFB;&#x52A0;&#x5230;&#x9996;&#x5217;/&#x6DFB;&#x52A0;&#x5230;&#x672B;&#x5217;/&#x6DFB;&#x52A0;&#x5143;&#x7D20;
    list.addFirst("&#x51B0;&#x58A9;&#x58A9;")
    list.addLast("&#x96EA;&#x5BB9;&#x878D;")
    list.add("&#x674E;&#x900D;&#x9065;")
    list.push("&#x7B49;&#x540C;&#x4E8E;add()")
    &#x5220;&#x9664;&#x9996;&#x5217;&#x5143;&#x7D20;/&#x5220;&#x9664;&#x5143;&#x7D20;
    list.removeFirst("&#x51B0;&#x58A9;&#x58A9;")
    list.removeLast("&#x96EA;&#x5BB9;&#x878D;")
    list.remove("&#x674E;&#x900D;&#x9065;")
    </string>

Map接口提供的是一种映射关系,存储元素是采用键值对方式(key-Value),能根据key快速的查询到Value值

*
– 特点:支持泛型、key值可重复/Value值不可重复

HashMap是Map接口实现类,底层是基于数组+链表(哈希表)实现的;HashMap集合整体就是一个数组,数组每个下标就代表着一个链表,链表节点中Vaule是Object类型

*

+ 优点:无序排列
+ 缺点:线程不安全

&#x521B;&#x5EFA;HashMap&#x65B9;&#x6CD5;&#xFF1A;
    HashMap<string,double>map = new HashMap<string,double>();
    &#x6DFB;&#x52A0;&#x5143;&#x7D20;
    map.put("&#x653F;&#x6CBB;"&#xFF0C;90.0)
    &#x5220;&#x9664;&#x5143;&#x7D20;
    map.remove("&#x653F;&#x6CBB;")
&#x904D;&#x5386;HashMap
for(Map.Entry<string,double>entry:map.entrySet()){
    sout("key:"+entry.getKey+",Value:"+entry.getValue);
}
</string,double></string,double></string,double>

Original: https://www.cnblogs.com/Lokemow/p/LokemowKai_JiHe.html
Author: Lokemow
Title: 集合自序整理集

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

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

(0)

大家都在看

  • 新建Github仓库并上传本地代码

    按照Github的教程 Adding a local repository to GitHub using Git 1. 创建空的Github仓库 创建远程仓库 🔗 ,注意不要勾选…

    数据库 2023年6月14日
    0109
  • 生产数据库主键超出限制解决方案

    不说那种建表的时候 设置好主键格式 的 解决方案. 事后诸葛啊. 谁都会 不靠谱方案1改主键表结构. 费时! 主键已经超长了.说明 数据量相当大. 改表结构的时间成本你能等得起吗方…

    数据库 2023年6月14日
    077
  • 慢SQL,压垮团队的最后一根稻草!

    一、什么是慢 SQL 什么是慢SQL? 顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 然后,问题就出现了。需要多长时间才能慢下来? [En] Then the quest…

    数据库 2023年5月24日
    075
  • 慢SQL,压垮团队的最后一根稻草!

    一、什么是慢 SQL 什么是慢SQL? 顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 那问题来了,多久才算慢呢? 这个慢其实是一个相对值,不同的业务场景下,标准要求是不一…

    数据库 2023年6月14日
    092
  • 容器化 | 使用 Alpine 构建 Redis 镜像

    上一期我们介绍了几种常见的构建镜像方式,并给出了功能对比、决策树等作为选型参考。本期我们将演示如何使用 Alpine 构建一个 Redis 镜像。 Alpine 系统使用 apk …

    数据库 2023年5月24日
    087
  • vue-router各个属性的作用及用法

    原文:https://www.cnblogs.com/goloving/p/9211358.html vue-router是vue单页面开发的路由,就是决定页面跳转的! Props…

    数据库 2023年6月16日
    076
  • Golang实现set

    Golang语言本身未实现set,但是实现了map golang的map是一种无序的键值对的集合,其中键是唯一的 而set是键的不重复的集合,因此可以用map来实现set 由于ma…

    数据库 2023年6月14日
    060
  • Centos7环境使用Mysql离线安装包安装Mysql5.7

    服务器环境:centos7 x64 需要安装:mysql5.7+ 1)检查mysql组合用户是否存在 2)若不存在,则创建mysql组和用户 版本选择,可以选择以下两种方式: 1)…

    数据库 2023年6月14日
    081
  • Java 书城项目本地部署指引

    在数据库管理工具中新建数据库名固定为 bookstore,并初始化以下表及数据 /* Navicat Premium Data Transfer Source Server : l…

    数据库 2023年6月11日
    096
  • 23种设计模式之访问者模式(Visitor Pattern)

    文章目录 概述 访问者模式的优缺点 访问者模式的使用场景 访问者模式的结构和实现 * 模式结构 模式实现 总结 概述 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可…

    数据库 2023年6月6日
    081
  • Java学习-第一部分-第二阶段-第三节:异常

    异常 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 运行下面的代码,看看有什么问题->引出异常和异常处理…

    数据库 2023年6月11日
    0109
  • 软件测试流程是什么?这题我不会啊

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/ae4fff18.html 你好,我是测试蔡坨坨。 最近收到不少准备转行软件测试的小伙伴私信问真实企业里…

    数据库 2023年6月11日
    091
  • 计算字符串中指定字符最大连续出现的次数

    //连中次数public static int LzNum(String str) { // 分&#x5272…

    数据库 2023年6月11日
    083
  • harbor安装

    Harbor 简介 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registr…

    数据库 2023年6月11日
    075
  • SQL与数据库编程学习笔记-day1

    一:理论知识参考 学习网站参考: 数据库主要分为两类: 1.关系型数据库:关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便,例如常见的:Oracl…

    数据库 2023年6月9日
    077
  • 《SpringBoot官网文档:2.1.5》

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

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