java中常见数据结构

ArrayList 是 Java 集合框架(Java Collections Framework)中的一个重要类,它实现了 List 接口,并提供了动态数组的功能。以下是 ArrayList 上的一些常用方法:

  1. 构造方法

    • ArrayList<E>(): 构造一个空的 ArrayList
    • ArrayList<E>(Collection<? extends E> c): 构造一个包含指定集合的元素的 ArrayList
  2. 添加元素

    • boolean add(E e): 将指定的元素添加到此列表的末尾。
    • void add(int index, E element): 在此列表的指定位置插入指定的元素。
    • boolean addAll(Collection<? extends E> c): 将指定集合中的所有元素添加到此列表的末尾。
    • boolean addAll(int index, Collection<? extends E> c): 将指定集合中的所有元素插入到此列表中的指定位置。
  3. 删除元素

    • void clear(): 从列表中移除所有元素。
    • E remove(int index): 移除列表中指定位置的元素。
    • boolean remove(Object o): 从列表中移除首次出现的指定元素(如果存在)。
    • boolean removeAll(Collection<?> c): 从列表中移除指定集合中包含的所有元素(只保留此列表中未包含在指定集合中的元素)。
    • boolean retainAll(Collection<?> c): 仅保留此列表中指定集合中也包含的元素(从此列表中移除未包含在指定集合中的所有元素)。
  4. 获取元素

    • E get(int index): 返回列表中指定位置的元素。
    • int indexOf(Object o): 返回此列表中首次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
    • int lastIndexOf(Object o): 返回此列表中最后出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
    • List<E> subList(int fromIndex, int toIndex): 返回列表中指定的 fromIndex(包括)和 toIndex(不包括)之间的部分视图。
  5. 修改元素

    • E set(int index, E element): 用指定的元素替换此列表中指定位置的元素。
  6. 检查元素

    • boolean contains(Object o): 如果此列表包含指定的元素,则返回 true。
    • boolean isEmpty(): 如果此列表不包含元素,则返回 true。
  7. 列表大小

    • int size(): 返回此列表中的元素数。
  8. 遍历列表
    通常使用 for-each 循环(也称为增强型 for 循环)或迭代器(Iterator)来遍历 ArrayList 中的元素。

  9. 转换为数组

    • Object[] toArray(): 返回一个包含此列表中所有元素的数组。
    • <T> T[] toArray(T[] a): 返回一个包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型 T 的数组类型。

注意:上述方法中的 E 是类型参数,表示列表中元素的类型。在实际使用中,你需要用具体的类型(如 StringInteger 等)来替换它。


    // 创建一个String类型的hashset
        HashSet<String> set = new HashSet<>();

在Java中,集合(Collections)是一个非常重要的概念,它允许你存储和操作对象的集合,而无需关心这些对象的具体实现。Java集合框架(Java Collections Framework)提供了一套用于表示和操作集合的统一架构。

Java集合框架主要包含以下几个接口和类:

  1. Collection接口
    • 是集合层次结构中的根接口。
    • 它定义了集合的基本操作,如添加、删除、查找等。
  2. List接口
    • 继承自Collection接口。
    • 它是有序的集合(也称为序列),允许包含重复的元素。
    • 常用的实现类有ArrayList、LinkedList和Vector。
    • ArrayList 是 List 接口的一种实现,它是使用数组来实现的。

      LinkedList 是 List 接口的一种实现,它是使用链表来实现的。

      ArrayList 遍历和查找元素比较快。LinkedList 遍历和查找元素比较慢。

      ArrayList 添加、删除元素比较慢。LinkedList 添加、删除元素比较快。

  3. Set接口
    • 继承自Collection接口。
    • 它不包含重复的元素。
    • 常用的实现类有HashSet、LinkedHashSet和TreeSet。
  4. Queue接口
    • 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
    • 常用的实现类有LinkedList、PriorityQueue等。
  5. Deque接口(双端队列):
    • 是一个具有队列和栈的性质的线性表。
    • 可以在两端插入和删除元素。
    • 常用的实现类有ArrayDeque和LinkedList。
  6. Map接口
    • 它将唯一的键映射到值。
    • Map中不允许存在重复的键,但每个键可以映射到多个值(在MultiMap中)。
    • 常用的实现类有HashMap、LinkedHashMap、TreeMap和Hashtable。
  7. 迭代器(Iterator)
    • 迭代器模式使得能够顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。
    • 通过迭代器,你可以遍历集合中的元素,而无需了解集合的具体实现。
  8. Collections类
    • 它是一个工具类,提供了许多静态方法,用于对集合进行排序、搜索、线程安全化等操作。

使用Java集合框架可以极大地简化代码,提高代码的可读性和可维护性。同时,集合框架也提供了很多现成的算法和数据结构,使得你可以更加专注于业务逻辑的实现。

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

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

相关文章

git基本使用(二):git分支的操作命令

Git 的多分支管理是指在同一个仓库中创建和管理多个分支&#xff0c;每个分支可以独立开发&#xff0c;互不干扰。分支是 Git 中的一种强大功能&#xff0c;允许开发人员同时在多个不同的功能、修复或实验上工作&#xff0c;而不会影响主分支或其他分支。通过多分支管理&#x…

spring-boot-starter-json配置对象属性为空不显示

问题背景 在Spring Boot中使用spring-boot-starter-json&#xff08;通常是通过jackson实现的&#xff09;时&#xff0c;如果你希望在序列化对象时&#xff0c;如果某个属性为空&#xff0c;则不显示该属性&#xff0c;你可以使用JsonInclude注解来实现这一点。 pom.xml <…

Java数据结构算法(最长递增序列二分查找)

前言: 最长递增子序列&#xff08;Longest Increasing Subsequence, LIS&#xff09;是指在一个给定的序列中&#xff0c;找到一个最长的子序列&#xff0c;使得这个子序列中的元素是单调递增的。子序列不要求在原序列中连续。 实现原理 使用一个 tails 列表&#xff0c;其中…

Java对象集合按照指定元素顺序排序

需求背景 最近在对一个集合列表的数据进行排序&#xff0c;需求是要集合数据按照一个排序状态值进行排序&#xff0c;而这个状态值&#xff0c;不是按照从小到大这样的顺序排序的&#xff0c;而是要按照特定的顺序&#xff0c;比如按照1, 0, 2的顺序排的&#xff0c;所以需要自…

clickhouse count和uniqCombined

count(distinct ) 和 uniqCombined 获取去重后的总数。 去重&#xff1a;order by distinct argMax group by 哪个好&#xff1f;&#xff1f; clickhouse数据去重函数介绍&#xff08;count distinct&#xff09;_clickhouse distinct-CSDN博客

stm32-USART通信

什么是usart&#xff1f;和其他通信又有什么区别&#xff1f; 如下图&#xff1a; USART是一种用于串行通信的设备&#xff0c;可以在同步和异步模式下工作。 usart有两根数据线&#xff0c;一根发送线&#xff08;tx&#xff09;一根接收线&#xff08;rx&#xff09;&#x…

2D卷积核处理3D(时序)数据

2D卷积核处理3D&#xff08;时序&#xff09;数据 一、Make A Video的处理方法&#xff08;PseudoConv3d&#xff09;二、Tune A Video的处理方法&#xff08;InflatedConv3d&#xff09;比较与分析相似点不同点结论 Conv2D一般用于处理image&#xff0c;dim一般是4&#xff0c…

准备了一些简单的面试题

当了一次面试官&#xff0c;主要是面试爬虫岗位&#xff0c;具体涉及scrapy爬虫框架和一些数据存储的小问题。具体的问题如下&#xff1a; scrapy框架如何将单机版爬虫改为分布式爬虫【使用scrapy_redis】&#xff0c;具体来讲需要修改哪几个组件的哪些具体部分Spider 1. 如何…

python3 List常用函数详细解释

python中 列表&#xff08;list&#xff09;的copy办法 1.先解决一个报错。 a [1,2,3] b a.copy print( b)报错&#xff1a; AttributeError: builtin_function_or_method object has no attribute copy这是因为a.copy语句并没有执行copy函数&#xff0c;而是把a.copy这个函…

React Antd ProTable 如何设置类似于Excel的筛选框

React Antd ProTable 如何设置类似于Excel的筛选框 目标&#xff1a;在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图&#xff1a;点击标题列上方的漏斗状图标&#xff0c;即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明&#xff0c;是有…

解决所有终端中文输出乱码的问题

一、系统自带的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe&#xff0c;和PowerShell默认使用“当前系统区域设置”设定好的936 (ANSI/OEM - 简体中文 GBK)语言编码。 1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因 在控制面板→…

网络抓包分析工具

摘要 随着网络技术的快速发展&#xff0c;网络数据的传输和处理变得日益复杂。网络抓包分析工具作为网络故障排查、性能优化以及安全审计的重要工具&#xff0c;对于提升网络管理的效率和准确性具有重要意义。本文旨在设计并实现一款高效、易用的网络抓包分析工具&#xff0c;…

期末测试一

字符数组的排序注意的问题 &#xff1a; 1.对于输入字符的时候 如果给出了要输入几个字符 n >>>>> for ( i 0 ; i < n ;i ) { scanf("%c",&ch); } 如果说直到输入到换行符结束 >>>>>>while ( ch! \ n ) 这个需要额…

CSS|04 复合选择器伪类选择器属性选择器美化超链接

基本选择器&#xff1a;见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器&#xff0c;同时匹配选择器1和选择器2&#xff0c;多个选择器之间用逗号分隔举例&#xff1a; p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器&#xff0c;匹配所有属于E元素后…

基于长短时记忆网络LSTM的TE过程故障诊断(MATLAB R2021B)

实验所用 TE 仿真过程的数据集是网上公开的数据集&#xff0c;该数据集中的训练集和测试集分别包含 20 种故障工况和一种正常工况数据&#xff0c;其中所采集的每个样本信号包含 41 个测量变量和 11 个控制变量&#xff0c;所以每个时刻采集到的样本有 52 个观测变量。 TE 仿真…

NoSQL之Redis配置与管理

目录 一、关系型数据库和非关系型数据库 1.关系型数据库 2.非关系型数据库 3.关系型数据库和非关系型数据库区别 二、Redis 1.Redis简介 2.Redis 的优点 3.Redis 使用场景 4.Redis的数据类型 5.哪些数据适合放入缓存中&#xff1f; 6.Redis为什么这么快&#xff1f;…

BUG:AttributeError: module ‘websocket‘ has no attribute ‘enableTrace’

AttributeError: module ‘websocket’ has no attribute enableTrace’ 环境 windows 11 Python 3.10websocket 0.2.1 websocket-client 1.8.0 websockets 11.0.3 rel 0.4.9.19详情 一开始…

ActiveMQ camel

游览器输入地址: http://127.0.0.1:8161/admin/ 访问activemq管理台 账号和密码默认为: admin/admin# yml配置的密码也是如下的密码 activemq:url: failover:(tcp://localhost:61616)username: adminpassword: adminComponent public class ActiveMqReceiveRouter extends Rout…

AudioLM音频生成模型

GPT-4o (OpenAI) AudioLM&#xff08;Audio Language Model&#xff09;是一种生成音频的深度学习模型。它可以通过学习语言模型的结构来生成连贯和高质量的音频信号。这类模型通常应用于语音合成、音乐生成和音频内容生成等领域。以下是一些与AudioLM相关的核心概念和技术细…

【JavaEE进阶】Spring AOP使用篇

目录 1.AOP概述 2.SpringAOP快速入门 2.1 引入AOP依赖 2.2 编写AOP程序 3. Spring AOP详解 3.1 Spring AOP 核心概念 3.1.1切点(Pointcut) 3.1.2 连接点 (Join Point) 3.1.3 通知(Advice) 3.1.4 切面(Aspect) 3.2 通知类型 3.3PointCut 3.4 切面优先级 3.5 切点表…