Java 集合 笔记

news2024/11/17 2:48:56

体系

  • Collection接口
    • List接口:按照顺序插入数据,可重复
      • ArrayList实现类:
      • LinkedList实现类:
    • Set接口:不可重复的集合
      • HashSet实现类
    • Queue接口:队列
      • LinkedList实现类
      • ArrayBlockingQueue实现类
      • PriorityQueue实现类
  • Map接口
    • HashMap实现类
    • Hashtable实现类

ArrayList

底层通过数组实现,可理解为扩容数组

ArrayList的插入,可能涉及数组元素的移动、扩容

创建ArrayList对象

不传递类型参数和长度参数,直接构造:ArrayList list = new ArrayList();此时list可以包含各种类型的数据,底层是长度为0的数组
请添加图片描述
可以传入长度参数,指定数组初始长度:ArrayList list = new ArrayList(10);

可以传入另一个同类型集合作为参数

⚠️ArrayList扩容机制:无参构造时,第一次add时,底层创建长度为10的数组,以后每当不够时,就创建长度为1.5倍的新数组,再将数据搬到新数组,添加,原来的引用作废

常用方法

  • add(e):末端添加数据e
  • add(i, e):索引i位置增加元素e
  • addAll(Collection c):把集合c中的元素全加进调用的对象
  • size():集合中元素个数
  • get(i):获取索引i位置处的元素
  • set(i, e):设置索引i处元素为e(有返回值,是修改前的值
  • remove(i):删除索引i处的元素(有返回值,是删除的元素值
  • 可用enhance for遍历
  • indexOf(e):返回e第一个索引,若不存在,返回-1
  • lastIndexOf(e):返回e最后一个索引,若不存在,返回-1
  • boolean contains(e):是否存在e
  • boolean isEmpty()ture表示集合空
  • clear():清空
  • toArray():把集合变成数组类型
  • clone():复制新对象

请添加图片描述

LinkedList

底层是链表实现

创建LinkedList对象

ArrayList类似,不再赘述

常用方法

添加元素

  • add(e):在末端添加元素e
  • add(i, e):在索引i位置添加元素e
  • pop(e):在链表最前面添加元素e
  • addFirst(e):头插e
  • addLast(e):尾插e
  • addAll(Collection c):将c中的数据都添加

获取元素

  • get(i):获取索引i位置处的元素
  • getFirst():获取第一个元素
  • getLast():获取最后一个元素
  • 可用enhance for按顺序遍历
  • contains(e):是否包含元素e
  • indexOf(e):获取e的第一个索引
  • lastIndexOf(e):获取e的最后一个索引

修改元素

  • set(i, e):将索引i的元素设置为e

删除元素

  • remove():默认删除第一个元素
  • pop():弹出第一个元素
  • remove(i):删除索引i位置
  • remove(e):删除元素e
  • removeFirst()
  • removeLast()
  • clear():清空

其他

  • size():获取长度
  • isEmpty()“:是否为空

补充 比较器

ArrayListLinkedList有排序方法sort(),对于一维数组可以实现默认升序

我们可以自己指定排序方式,需要传入比较器类对象,这个类必须实现Comparator接口,重写compare方法

compare方法需要指定类型参数,返回一个int,传入Object对象o1o2。返回0表示两个对象值“相等”;返回正数,说明o1>o2,那么o1要排到o2后面,实际就是降序;返回负数,说明o1<o2o1排在o2前面,就是升序

请添加图片描述


HashSet

特点:无序存储,保证集合中元素唯一,不重复

底层是数组+链表,元素加入HashSet时,通过哈希算法计算应该存储的位置。采用一定方法解决冲突(数组+链表,拉链法)

哈希值的计算,涉及到equals方法和hashCode方法

常用方法

创建

  • Set<Integer> set = new HashSet<Integer>(); 可以不指定类型参数,存储任意类型

添加元素

  • add(e):将元素e添加
  • addAll(Collection c):将集合c里面的元素添加进去

访问元素

  • enhance for遍历

删除元素

  • remove(e):删除元素e
  • clear():清空

其他

  • isEmpty():判断集合是否为空
  • contains(e):判断集合是否包含e
  • clone():克隆对象

Queue

实现类包括LinkedListArrayBlockingQueuePriorityQueue

ArrayBlockingQueue底层是数组,构造时需要传入参数,指定长度。队列满无法再入队

LinkedList是链队

PriorityQueue是优先队列,小顶堆

常用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python CalmAn工具包安装及环境配置过程【Windows】

文章目录CalmAn简介安装要求我的设备1>CalmAn压缩包解压2>conda创建虚拟环境3>requirements依赖包配置&#xff08;包括tensorflow&#xff09;4>caiman安装(mamba install)5>caimanmanager.py install6>PyCharm添加解释器7>Demo演示8>遇到的问题CalmA…

DB SQL 转 ES DSL(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...

1. 简介 日常开发中需要查询Elasticsearch中的数据时&#xff0c;一般会采用RestHighLevelClient高级客户端封装的API。项目中一般采用一种或多种关系型数据库(如&#xff1a;Mysql、PostgreSQL、Oracle等) NoSQL(如&#xff1a;Elasticsearch)存储方案&#xff1b;不同关系数…

【SAP Abap】X档案:SAP ABAP 中 AMDP 简介及实现方法

SAP ABAP 中 AMDP 简介及实现方法0、前言1、AMDP 简介1.1 代码下沉&#xff08;Code Pushdown&#xff09;1.2 AMDP 是托管数据库过程的容器1.3 AMDP 的优缺点1.4 几种数据库访问方式的区别1.5 几种数据库访问方式的选用1.6 使用的开发工具2、实现方法2.1 AMDP PROCEDURE&#…

Linux自带10种常用性能分析与监控工具

liunx的性能分析与监控这些问题是一个很重要的问题&#xff0c;我们需要解决这个问题就可以借助liunx中的一些工具来帮我们处理掉这个问题&#xff0c;以下将会讲一下目前liunx中常用自带的性能分析与监控工具 Linux自带10种常用性能分析与监控工具1.vmstat2.iostat3.iotop监控…

uniapp cli的使用

uniapp官方文档有很多地方写的不是很明白。写笔记还是非常有必要的。 cli入门 uniapp的cli分为两种&#xff1a;uni cli和hbuilder cli。下面是官方对于两者的定义。官方实际上是更推荐uni cli的。因为官方文档通篇都是介绍uni cli&#xff0c;也是优先介绍uni cli的。hbuild…

Linux系统之Bonding 网卡绑定配置方法

Linux系统之Bonding 网卡绑定配置方法一、检查本地系统环境1.检查系统版本2.查看服务器网卡二、创建网卡配置文件1.进入网卡配置文件目录2.拷贝eth0的网卡配置文件3.修改bond0网卡配置文件4.修改eth1网卡配置文件5.修改eth2网卡配置文件三、创建bonding的配置文件1.编辑bonding…

OneFlow v0.9.0正式发布

今天是 OneFlow 开源的第 903 天&#xff0c;OneFlow v0.9.0 正式发布。本次更新包含 640 个 commit&#xff0c;完整更新列表请查看链接&#xff1a;https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.9.0&#xff0c;欢迎下载体验新版本&#xff0c;期待你的反馈。One…

Java补充内容(Junit 反射 注解)

1 Junit测试 测试分类&#xff1a; 1. 黑盒测试&#xff1a;不需要写代码&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值。 2. 白盒测试&#xff1a;需要写代码的。关注程序具体的执行流程。 Junit使用&#xff1a;白盒测试 步骤&#xff1a; 定义一个测试类(测试…

机器学习知识总结——18.实现一个简单的K-Means聚类

文章目录引用库生成样本数据训练K-Means实验在上一章节里简要的介绍了无监督学习中聚类的知识点&#xff0c;看的太多理论概念&#xff0c;难免会有点莫名其妙&#xff0c;现在就让我们来实现一个简单的 K-Means 算法&#xff0c;从而从原理上彻底弄明白聚类是怎么工作的。 引…

YOLO v2主要看这些重点

来源&#xff1a;投稿 作者&#xff1a;ΔU 编辑&#xff1a;学姐 往期内容&#xff1a; YOLOv1学习笔记 论文 《YOLO9000:Better, Faster, Stronger》 Joseph Redmon∗†, Ali Farhadi∗† University of Washington∗ , Allen Institute for AI† http://pjreddie.com/…

计算机视觉OpenCv学习系列:第五部分、颜色操作

第五部分、颜色操作第一节、颜色表操作1.查找表LUT(look up table)2.颜色查找表&#xff08;1&#xff09;Gamma校正&#xff08;2&#xff09;OpenCV默认的查找表3.代码练习与测试&#xff08;1&#xff09;多种颜色查找表&#xff08;2&#xff09;滚动条颜色查找表第二节、随…

23种设计模式(十四)——中介者模式【接口隔离】

文章目录 意图什么时候使用中介者真实世界类比中介者模式的实现中介者模式的优缺点亦称:调解人、控制器、Intermediary、Controller、Mediator 意图 用一个中介者对象来封装一系列的对象交互。使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间…

新书预告:人机环境系统智能

东方算计&#xff1a;象者&#xff0c;像也西方计算&#xff1a;逻辑 or 实证人工智能是数学物理的产物&#xff0c;而数学是不完备的&#xff0c;物理仍是在探索中&#xff0c;所以人工智能存在着先天不足&#xff0c;有着大量的脆弱和缺点&#xff0c;具体而言&#xff0c;包…

7、矩阵的创建

目录 一、希尔伯特&#xff08;Hilbert&#xff09;矩阵 二、托普利兹&#xff08;Toeplitz&#xff09;矩阵 三、0&#xff5e;1间均匀分布的随机矩阵 四、标准正态分布随机矩阵 五、魔方矩阵 六、帕斯卡矩阵 七、范德蒙&#xff08;Vandermonde&#xff09;矩阵 MATLA…

机器学习——基本概念

小谈&#xff1a;一直想整理机器学习的相关笔记&#xff0c;但是一直在推脱&#xff0c;今天发现知识快忘却了&#xff08;虽然学的也不是那么深&#xff09;&#xff0c;但还是浅浅整理一下吧&#xff0c;便于以后重新学习。最近换到新版编辑器写文章了&#xff0c;有的操作挺…

跨平台freebasic集锦(1)-安装与概述

目录TIOBE Index for January 2023概述特点BASIC兼容性干净的语法多平台Unicode支持大量内置数据类型用户定义类型&#xff08;UDT&#xff09;默认过程参数值内联汇编Intel语法传统的预处理器支持调试支持创建OBJ、LIB、DLL和控制台或GUI EXE优化代码生成下载安装TIOBE Index …

Java设计模式-迭代器模式、迭代器模式是什么、怎么使用

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 6.9 迭代器者模式 6.9.1 定义 提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示 6.9.2 结构 抽象聚合(Aggregate)角色&a…

[创业之路-48] :动态股权机制 -3- 静态股权分配 VS 动态股权分配

静态的股权分配是基础&#xff0c;动态的股权分配才是灵魂&#xff1a;只要你给了固态股权&#xff0c;比如说&#xff0c;股东A在最开始出资100万&#xff0c;占了10%的股份&#xff0c;但是&#xff0c;在后面的工作种&#xff0c;因为能力问题&#xff0c;价值观问题&#x…

回收租赁商城系统功能拆解12讲-会员权益

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

【自然语言处理】词袋模型在文本分类中的用法

词袋模型在文本分类中的用法1.加载数据 20 Newsgroups&#xff1a;数据被组织成 20 个不同的新闻组&#xff0c;每个新闻组对应一个不同的主题。一些新闻组彼此非常密切相关&#xff08;例如 comp.sys.ibm.pc.hardware / comp.sys.mac.hardware&#xff09;&#xff0c;而其他…