4-6-2.C# 数据容器 - ArrayList 扩展(ArrayList 注意事项、ArrayList 存储对象的特性、ArrayList 与数组的转换)

ArrayList 概述

  1. ArrayList 存储的元素是有序的

  2. ArrayList 存储的元素是可重复的

  3. ArrayList 不支持泛型,存储的元素都是 object 类型

  4. ArrayList 支持索引,可以通过索引获取或修改元素

  5. ArrayList 支持动态大小(有扩容机制),不同于数组的固定大小

  6. ArrayList 内部使用数组来存储元素,当数组填满时,会自动分配一个新的、更大的数组,并将现有元素复制到新数组中

  7. ArrayList 不是线程安全的,在多线程环境中需要谨慎使用


一、ArrayList 注意事项

1、ArrayList 存储的元素是可重复的
ArrayList list = new ArrayList();list.Add(10);
list.Add("Hello");
list.Add(3.14);
list.Add(10);foreach (object item in list)
{Console.WriteLine(item);
}
# 输出结果10
Hello
3.14
10
2、ArrayList 使用时要注意不要越界
ArrayList list = new ArrayList();list.Add(10);
list.Add("Hello");
list.Add(3.14);Console.WriteLine(list[10]);
# 输出结果未经处理的异常:  System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。

二、ArrayList 存储对象的特性

  1. ArrayList 存储对象并对对象进行查找时,对于没有重写 Equals 和 GetHashCode 方法的对象可能不太方便
ArrayList persons = new ArrayList();persons.Add(new Person("tom", 20));
persons.Add(new Person("jack", 25));
persons.Add(new Person("smith", 30));Console.WriteLine(persons.IndexOf(new Person("tom", 20)));
# 输出结果-1
  1. ArrayList 存储对象并对对象进行查找时,对于重写 Equals 和 GetHashCode 方法的对象比较方便
ArrayList staffs = new ArrayList();staffs.Add(new Staff("tom", 20));
staffs.Add(new Staff("jack", 25));
staffs.Add(new Staff("smith", 30));Console.WriteLine(staffs.IndexOf(new Staff("tom", 20)));
# 输出结果0

三、ArrayList 与数组的转换

1、ArrayList 转数组
ArrayList list = new ArrayList();list.Add(10);
list.Add("Hello");
list.Add(3.14);object[] array = (object[])list.ToArray(typeof(object));foreach (object item in array)
{Console.WriteLine(item);
}
# 输出结果10
Hello
3.14
2、数组转 ArrayList
object[] array = { 10, "Hello", 3.14 };ArrayList list = new ArrayList(array);foreach (object item in list)
{Console.WriteLine(item);
}
# 输出结果10
Hello
3.14

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

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

相关文章

安装SQL server中python和R

这两个都是编程语言 R 是一种专门为统计计算和数据分析而设计的语言,它具有丰富的统计函数和绘图工具,常用于学术研究、数据分析和统计建模等领域。 Python 是一种通用型编程语言,具有简单易学、语法简洁、功能强大等特点。它在数据科学、机…

项目技术栈-解决方案-web3去中心化

web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…

【linux】centos7 换阿里云源

查看yum配置文件 yum的配置文件通常位于/etc/yum.repos.d/目录下。你可以使用以下命令查看这些文件: ls /etc/yum.repos.d/ # 或者 ll /etc/yum.repos.d/备份当前的yum配置文件 建议备份当前的yum配置文件: sudo cp /etc/yum.repos.d/CentOS-Base.re…

Python 中.title()函数和.lower()函数

一.title()函数 1.title()函数的功能 将字符串中的每一单词的首字母大写 2.举例 S1"i love you" S2S1.title() print(S2)3.输出 二.lower()函数 1.lower()函数的功能 将字符串中的每一大写字母都变成的小写字母 2.举例 S1"I LOVE YOU" S2S1.lower()…

[DEBUG] 服务器 CORS 已经允许所有源,仍然有 304 的跨域问题

背景 今天有一台服务器到期了,准备把后端迁移到另一台服务器上,结果前端在测试的时候,出现了 304 的跨域问题。 调试过程中出现的问题,包括但不限于: set the request’s mode to ‘no-cors’Redirect is not allow…

【AI构思渲染】网络直播——建筑绘图大模型生成渲染图

家人们!!好消息来了!! 2024年11月19日,上午10:00-11:00 构力学堂将会给大家带来一场直播课《AI构思渲染第一课,建筑绘图大模型生成渲染图》 课程亮点: 1、AI插件相关介绍 2、AI构思渲染安装…

初级数据结构——栈

目录 前言一、栈的基本概念二、栈的实现方式三、栈的性能分析四、栈的应用场景五、栈的变体六、出栈入栈的动态图解七、代码模版八、总结结语 前言 数据结构栈(Stack)是一种线性的数据结构,它只允许在序列的一端(称为栈顶&#x…

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

前言 在现代前端开发中,代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…

简易入手《SOM神经网络》的本质与原理

原创文章,转载请说明来自《老饼讲解神经网络》:www.bbbdata.com 关于《老饼讲解神经网络》: 本网结构化讲解神经网络的知识,原理和代码。 重现matlab神经网络工具箱的算法,是学习神经网络的好助手。 目录 一、入门原理解说 01.…

数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用

昨天帮助社区IC训练营学员远程协助解决一个Calibre DRC案例。通过这个DRC Violation向大家分享下Innovus和ICC2中如何批量约束cell的spacing rule。 数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案 下图所示为T12nm A55项目的Ca…

深度学习神经网络在机器人领域应用的深度剖析:原理、实践与前沿探索

深度学习神经网络在机器人领域的应用非常广泛,以下是详细介绍: 主要应用方向 环境感知与识别: 物体识别与分类:机器人利用深度学习神经网络能够准确识别周围环境中的各种物体,比如区分不同形状、颜色、材质的物品&…

自动化工具 Gulp

自动化工具 gulp 摘要 概念:gulp用于自动化开发流程。 理解:我们只需要编写任务,然后gulp帮我们执行 核心概念: 任务:通过定义不同的任务来组织你的构建流程。 管道:通过管道方式将文件从一个插件传递…

基于Spring Boot与Redis的令牌主动失效机制实现

目录 前言1. 项目结构和依赖配置1.1 项目依赖配置1.2 Redis连接配置 2. 令牌主动失效机制的实现流程2.1 登录成功后将令牌存储到Redis中2.2 使用拦截器验证令牌2.3 用户修改密码后删除旧令牌 3. Redis的配置与测试4. 可能的扩展与优化结语 前言 在现代Web系统中,用…

llama factory lora 微调 qwen2.5 7B Instruct模型

项目背景 甲方提供一台三卡4080显卡 需要进行qwen2.5 7b Instruct模型进行微调。以下为整体设计。 要使用 LLaMA-Factory 对 Qwen2.5 7B Instruct模型 进行 LoRA(Low-Rank Adapters)微调,流程与之前提到的 Qwen2 7B Instruct 模型类似。LoRA …

GPT-5 要来了:抢先了解其创新突破

Microsoft 的工程师计划于 2024 年 11 月在 Azure 上部署 Orion (GPT-5)。虽然这一版本不会向公众开放,但其上线被视为人工智能领域的一个重要里程碑,并将产生深远的影响。 文章目录 GPT-5 真的要来了GPT-4 的局限性GPT-5 的创新突破与遗留挑战GPT-5 预期…

微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践

本文作者: 北京深鉴智源科技有限公司架构师 郑荣凯 本文整理自北京深鉴智源科技有限公司架构师郑荣凯,在《深入浅出 OceanBase 第四期》的分享。 知识图谱是一项综合性的系统工程,需要在在各种应用场景中向用户展示经过分页的一度关系。 微…

FluentUI使用

首先向Qt Qml FluentUI组件库的作者zhuzichu520致敬! 一、源码下载地址: 1)GitHub - zhuzichu520/FluentUI: FluentUI for QML 2)GitCode - 全球开发者的开源社区,开源代码托管平台 二、Qt6下载地址: qt-online-i…

`node-gyp` 无法找到版本为 `10.0.19041.0` 的 Windows SDK

从你提供的错误信息来看,问题出在 node-gyp 无法找到版本为 10.0.19041.0 的 Windows SDK。我们可以尝试以下几种方法来解决这个问题: 完整示例 方法 1:安装指定版本的 Windows SDK 下载并安装 Windows SDK: 访问 Windows SDK 下…

CTFHub每日练习

文章目录 技能树CTF Web信息泄露目录遍历PHPINFO备份文件下载网站源码bak文件vim缓存.DS_Store Git泄露Logstash index方法一方法二 密码口令弱口令 技能树 CTF Web 信息泄露 目录遍历 PHPINFO 备份文件下载 网站源码 当开发人员在线上环境中对源代码进行了备份操作&#x…

【PowerHarmony】电鸿蒙学习记录-编写helloworld!

入门 一、编写HelloWorld1.1 编译SDK1.2 业务构建1.2.1 编写HelloWorld业务代码1.2.3 编辑业务构建文件 1.3 添加新组件1.4 编辑组件条目1.5 编译验证1.6 新增文件结构展示 一、编写HelloWorld 1.1 编译SDK 可以在VSCode终端中编译SDK源码,确认编译通过后即可开始…