Arraylist,TreeSet,TreeMap的增删改查及遍历

ArrayList :

是 Java 中一个动态数组,它基于可变长度数组实现,能够以恒定时间复杂度进行增删改操作,但遍历操作的时间复杂度为 O(n)。

有序,可重复,有索引

增删改查排序:

  • **add(E e):**向 ArrayList 的末尾添加一个元素。
  • **remove(int index):**从 ArrayList 中删除指定索引处的元素。
  • **set(int index, E element):**用给定元素替换 ArrayList 中指定索引处的元素。
  • **get(int index):**获取 ArrayList 中指定索引处的元素。
  • **list.sort(null):**使用自然排序对列表进行排序。
  • **Collections.sort(ArrayList<T> list):**使用归并排序算法对列表进行自然排序(按元素的自然顺序排序)。
  • toArray():返回一个包含 ArrayList 中所有元素的数组。
// 创建一个 ArrayList
ArrayList<String> arrayList = new ArrayList<>();// 增
arrayList.add("Alice");
arrayList.add("Bob");
arrayList.add("Carol");// 删
arrayList.remove(1);// 改
arrayList.set(0, "Alice (updated)");// 查
String firstElement = arrayList.get(0);

 TreeSet:

TreeSet 是 Java 中一个有序集合,它基于红黑树实现,能够以对数时间复杂度进行增删改查和遍历操作。

可排序,不重复,无索引。

增删改查:

  • **add(E e):**向 TreeSet 中添加一个元素。
  • **remove(Object o):**从 TreeSet 中删除一个元素。
  • **contains(Object o):**检查 TreeSet 中是否包含给定元素。
  • **first():**获取 TreeSet 中最小的元素。
  • **last():**获取 TreeSet 中最大的元素。

遍历:

  • **iterator():**返回 TreeSet 中元素的迭代器。
  • **descendingIterator():**返回 TreeSet 中元素的降序迭代器。
// 创建一个 TreeSet
TreeSet<String> treeSet = new TreeSet<>();// 增
treeSet.add("Alice");
treeSet.add("Bob");
treeSet.add("Carol");// 删
treeSet.remove("Bob");// 查
boolean containsAlice = treeSet.contains("Alice");// 遍历(使用迭代器遍历)
Iterator<String> iterator = treeSet.iterator();
while (iterator.hasNext()) {String name = iterator.next();System.out.println(name);
}// 遍历(使用降序迭代器遍历)
Iterator<String> descendingIterator = treeSet.descendingIterator();
while (descendingIterator.hasNext()) {String name = descendingIterator.next();System.out.println(name);
}

 

TreeMap :

是 Java 中的一个有序映射,它基于红黑树实现,能够以对数时间复杂度进行增删改查和遍历操作。

可排序,不重复,无索引。

增删改查:

  • **put(K key, V value):**向 TreeMap 中插入一个键值对,如果键已存在,则替换旧值。
  • **remove(Object key):**从 TreeMap 中删除一个键值对。
  • **get(Object key):**获取与给定键关联的值。
  • **replace(K key, V value):**用给定值替换与给定键关联的值。
  • **containsKey(Object key):**检查 TreeMap 中是否包含给定键。

遍历:

  • **keySet():**返回 TreeMap 中所有键的集合。
  • **values():**返回 TreeMap 中所有值的集合。
  • **entrySet():**返回 TreeMap 中所有键值对的集合。

 

// 创建一个 TreeMap
TreeMap<String, Integer> treeMap = new TreeMap<>();// 增
treeMap.put("Alice", 10);
treeMap.put("Bob", 20);
treeMap.put("Carol", 30);// 删
treeMap.remove("Bob");// 改
treeMap.replace("Alice", 15);// 查
Integer aliceScore = treeMap.get("Alice");// 遍历(使用 for-each 循环遍历键)
for (String key : treeMap.keySet()) {System.out.println("Key: " + key + ", Value: " + treeMap.get(key));
}// 遍历(使用 for-each 循环遍历值)
for (Integer value : treeMap.values()) {System.out.println("Value: " + value);
}// 遍历(使用 for-each 循环遍历键值对)
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}

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

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

相关文章

【C语言】翻译环境与运行环境

一、前言 在我们学习C语言的时候&#xff0c;第一个接触的程序就是&#xff1a;在屏幕上打印” hello word! “&#xff0c;可当时的我们却未去深入的理解与感悟&#xff0c;一个程序代码是如何运行的&#xff1b;而这一期的博客&#xff0c;则是带着我们&#xff0c;通过C代码…

mac电脑安装redis教程

1、下载地址 Download | RedisRedisYou can download the last Redis source files here. For additional options, see the Redis downloads section below.Stable (7.2)Redis 7.2 …https://redis.io/download/#redis-downloads 2、安装 2.1 解压下载后的压缩文件 2.2 进入…

Vulnhub:WESTWILD: 1.1

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirmap enm4ulinux sumbclient get flag1 ssh登录 提权 横向移动 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 0…

LeetCode-236. 二叉树的最近公共祖先【树 深度优先搜索 二叉树】

LeetCode-236. 二叉树的最近公共祖先【树 深度优先搜索 二叉树】 题目描述&#xff1a;解题思路一&#xff1a;递归判断解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖…

Qt中的事件与事件处理

Qt框架中的事件处理机制是其GUI编程的核心部分&#xff0c;它确保了用户与应用程序之间的交互能够得到正确的响应。以下是对Qt事件处理机制的详细讲解以及提供一些基本示例。 1. 事件与事件处理简介 事件&#xff1a;在Qt中&#xff0c;所有的事件都是从QEvent基类派生出来的&…

linux操作系统的进程状态

这个博客只是为了自己复习用的&#xff01;&#xff01;&#xff01; 冯诺依曼体系结构 计算机是由一个一个硬件组成的 输入设备&#xff1a;键盘&#xff0c;鼠标&#xff0c;扫描仪&#xff0c;写板等等 中央处理器&#xff08;CPU&#xff09;:含有运算器和控制器等 输出单…

【算法练习】27:冒泡排序学习笔记

一、冒泡排序的算法思想 原理&#xff1a;以升序为例&#xff0c;冒泡排序通过从左往右连续比较相邻元素&#xff0c;当发现左边比右边大就交换元素。从左往右依次比较完称为“一轮”&#xff0c;每轮结束之后就会固定一个元素。 时间复杂度&#xff1a;2层循环&#xff0c;所以…

不讲概念,讲实操,mysql 分表模糊查询、分页查询 及 merge 表的使用

1.Mysql merge合并表的要求 1.合并的分表必须是 MyISAM 引擎&#xff0c;MyISAN引擎是不支持事务的。2.Merge表只保证合表后数据唯一性&#xff0c;合表前的数据可能会存在重复。3.表的结构必须一致&#xff0c;包括索引、字段类型、引擎和字符集。4.删除 tb_member1 分表正确…

Python实现BOA蝴蝶优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

【蓝桥杯每日一题】4.4 扫雷

题目来源&#xff1a; 687. 扫雷 - AcWing题库 参考&#xff1a;y总视频讲解 问题描述&#xff1a; 找到解决扫雷游戏中的最小点击次数 思考&#xff1a; 为了保证胜利且每个格子只能走一次&#xff0c;所以当遇到地雷或检测到该格子周围存在地雷的时候就需要停止搜索&…

前端同学必备:教你如何安装、使用Chrome的vue-devtools插件

I. 介绍vue-devtools插件 Vue-devtools是一个Chrome浏览器插件&#xff0c;它是一个浏览器调试工具&#xff0c;用于开发Vue.js应用程序。它可以用于Vue.js应用程序的调试&#xff0c;可以更好地了解应用程序的结构和状态&#xff0c;以及帮助快速修复代码错误。 Vue-devtool…

[技术闲聊]我对电路设计的理解(三)

终于可以独立做项目了&#xff0c;是不是很激动&#xff0c;是不是为自己骄傲和自豪&#xff0c;应该的&#xff0c;奋斗那么久不就是为了站在山巅看看四周的风景嘛&#xff01; 虽说山外还有山&#xff0c;但是此刻就在脚下的山巅上&#xff0c;怡然自得都是不过分的&#xff…

LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)

引言 简介 编译Android可用的模型 转换权重 生成配置文件 模型编译 编译apk 修改配置文件 绑定android library 配置gradle 编译apk 手机上运行 安装 APK 植入模型 效果实测 0. 引言 清明时节雨纷纷&#xff0c;路上行人欲断魂。 小伙伴们好&#xff0c;我是《小…

9.动态规划——4.最长公共子序列(动态规划类的算法题该如何解决?)

例题——最长公共子序列(一) 分析 设最长公共子序列 d p [ i ] [ j ] dp[i][j] dp[i][j]是 S 1 S_1 S1​的前 i i i个元素&#xff0c;是 S 2 S_2 S2​的前 j j j个元素&#xff0c;那么有&#xff1a; 若 S 1 [ i − 1 ] S 2 [ i − 1 ] S_1[i-1]S_2[i-1] S1​[i−1]S2​[…

MFC 获取程序版本信息

在 MFC 应用程序中&#xff0c;可以使用 GetFileVersionInfo 函数来获取程序版本信息。这个函数能够获取一个指定文件的版本信息&#xff0c;并将其存储在一个缓冲区中。然后&#xff0c;可以使用 VerQueryValue 函数来解析版本信息并提取所需的信息。 #include <afxver_.h&…

leetcode刷题-代码训练营-第7章-回溯算法1

回溯法模板 void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节点孩子的数量就是集合的大小&#xff09;) {处理节点;backtracking(路径&#xff0c;选择列表); // 递归回溯&#xff0c;撤销处理结果} }理解 从…

小林coding图解计算机网络|基础篇02|键入网址到网页显示,期间发生了什么?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a;小林coding网站通道 文章目录 孤单小弟——HTTP真实地址查询——DNS指南好帮手——协议栈可靠传输——TCP远程定位——IP两点传输——MAC出口——网卡送别者——交…

SpringAOP和AspectJ有什么关系 ?

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a;每天一个知识点 ✨特色专栏&#xff1a…

Linux是什么,该如何学习

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、Linux在现代计算机领域…

Golang 内存管理和垃圾回收底层原理(一)

一、这篇文章我们来聊聊Golang内存管理和垃圾回收&#xff0c;主要注重基本底层原理讲解&#xff0c;进一步实战待后续文章 1、这篇我们来讨论一下Golang的内存管理 先上结构图 从图我们来讲Golang的基本内存结构&#xff0c;内存结构可以分为&#xff1a;协程缓存、中央缓存…