首页 > 编程语言 >C#的 ArrayList集合 和 List 集合

C#的 ArrayList集合 和 List 集合

时间:2024-03-03 15:23:11浏览次数:28  
标签:C# ArrayList List 索引 ints 集合 arrayList

// 集合 & 字典的初识
// 集合的使用
// 集合与数组比较类似,都用于存放一组值
// 数组的优劣势分析
// 1. 优势:数组在内存中是连续存储的,所以他的索引速度非常的快,而且赋值与修改元素也很简单
// 2. 劣势:在数组的连个数据之间插入数据很麻烦  在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会
// 造成内存浪费,过低,会造成数据溢出的错误;

// ArrayList的使用
// arraylist 是 .NetFramework 提供的用于数据存储和检索的专用类
// 他是命名空间 System.Collections 下的一部分
// ArrayList 的优势
// 1. ArrayList 的大小是按照其中存储的数据来动态扩充与收缩的
// 2. 在声明 ArrayList 对象时并不需要指定他的长度
// 3. ArrayList 可以很方便的进行数据的添加,插入和移除
ArrayList arrayList = new ArrayList();
// 将数据新增到集合结尾处
arrayList.Add("123");
arrayList.Add(1234);
// 修改指定索引处的数据
arrayList[1] = 12;
// 移除指定索引处的数据
arrayList.RemoveAt(0);  // 移除索引是 0 的数据
// 移除指定内容的数据
arrayList.Remove(1234);  // 移除内容是 1234 的数据项
// 在指定索引处加入数据
arrayList.Insert(1, 2);  // 在索引1处插入数据2
// 范围删除数据
arrayList.RemoveRange(0,2);  // 从索引 0 开始 删除 2 个数据项

// 为何没人使用 ArrayList 集合而去使用 List 集合
// ArrayList 的劣势
// ArrayList 在存储数据时使用obbject进行存储的
// ArrayList 不是类型安全的,使用的收可能出现类型不匹配的错误
// ArrayList 的存储在拆箱和装箱操作,导致其性能低下 
// 把值类型转换引用类型 就叫做 装箱
// 把引用类型转换值类型 就叫做 拆箱 - 性能损耗

// arrayList劣势的解决 使用 List 集合
// List 集合 和 ArrayList 集合都继承了相同的接口 所以很类似
// 在声明List集合时,需要同时为其声明List集合内的数据的对象类型
List<string> strings = new List<string>(); // 声明一个类型是 string 的 List 集合
// 将数据新增到集合的结尾处
// strings.Add(123); // 插入的如果不是 string 就会报错
strings.Add("123");
// 对象初始化赋值
List<int> ints = new List<int>() { 
    1, 2, 3, 4
};
// 遇到 <> 是泛型的指定
// 修改指定索引的数据
ints[0] = 0;
// 移除指定索引的数据
ints.RemoveAt(0);
// 移除内容是 4 元素
ints.Remove(4);
// 指定索引处插入元素
ints.Insert(1, 23); // 索引 1 处插入元素 23
// 返回集合第一个对象
ints.First();
// 求出集合的长度
ints.Count();  // 数组是 length 集合 是 Count
// 拿到第一个 item 
// items.FirstOrDefault(m => m.id == 1);  // 拿到第一个 id = 1 的item 
//ints.FindAll(m => m.Name == "ACE");  // 拿到所有 Name = ACE 的 items

 

标签:C#,ArrayList,List,索引,ints,集合,arrayList
From: https://www.cnblogs.com/zhulongxu/p/18050084

相关文章

  • C#多线程
    在C#编程中,多线程是实现高效并发编程的关键技术之一。通过创建多个线程,程序可以同时执行多个任务,从而充分利用多核处理器的计算能力。本文将带你快速回顾C#多线程的基础知识,通过10分钟的学习,你将能够掌握多线程的核心概念,并学会使用C#语言创建和管理线程。一、多线程基础概念在C......
  • 网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点
    前言全局说明网页浏览器Chrome开发者调试工具-Source(源码)-断点调试、条件断点、日志断点断点,是某行代码要执行,还没有执行的一个暂停点一、截图对照1.1Chrome浏览器1.1.1蓝色,普通断点1.1.2设置断点类型图中分别是:backpoint:普通断点(蓝色)Conditionalbreakp......
  • unhide 是一款强大的取证工具,主要用于查找和发现被隐藏的进程、TCP/UDP端口以及其他隐
    unhide是一款强大的取证工具,主要用于查找和发现被隐藏的进程、TCP/UDP端口以及其他隐藏技术。其基本技术原理如下:ROOTKIT和LKM:ROOTKIT(RootKit)是一种恶意软件,常用于隐藏恶意活动和进程。它通过修改操作系统的核心组件和内核模块(LinuxKernelModule,LKM)来实现对系统的隐匿。u......
  • 1_IOC容器概述
    IOC容器IOC容器是InvensionofControl的简写,这是一种设计思想,是一个重要的面向对象变成法。Spring通过IOC容器来管理所有Java对象的实例化和初始化,控制对象与对象的依赖关系。我们将由IOC容器管理的Java对象称之为SpringBean,它与使用new关键字创建出来的Java对象没有任何区别......
  • RCE_STUDY
    概念RCE(Remotecodeexecution)远程代码执行漏洞,RCE又分命令执行和代码执行。RCE-远程代码执行:远程执行PHP代码RCE-远程命令执行:远程执行Linux或者Windows等系统命令。常见函数有:PHP:eval(),assert(),preg_replace(),call_user_func(),call_user_func_array()以及array_map......
  • 使用PyCharm完成git操作
    1.使用PyCharm完成git操作1.1克隆项目vss,选择启用版本控制,菜单变为Git选择版本控制工具git输入git仓库地址,选择一个不存在的文件夹输入账号密码1.2修改代码略1.3提交代码1.提交代码 2.推送代码 3.提交并推送代码4.远程仓库结果5.查看操作日志 ......
  • C++中UNIX时间戳与日期互转
    C++中UNIX时间戳与日期互转使用time.h头文件localtime可以把时间戳转为tm结构体,tm结构体中可以格式化输出时间mktime可以把tm结构体转为时间戳tm结构体中:year需要+1900,tm_mon的范围是0-11,tm_mday的范围是1-31structtm{inttm_sec;//secondsaftert......
  • c语言复习
    3-2奇偶分家。输入一个正整数n,再输入n个非负整数,统计奇数和偶数各有多少个#include<stdio.h>intmain(){intcount_odd,count_even,i,n,number;count_odd,count_even,i,n,number;count_odd=0;/*count_odd记录奇数的个数*/count_even=0;/*count......
  • pytorch报错:Variable._execution_engine.run_backward( # Calls into the C++ engine
    GPU模式下运行pytorch代码报错,pytorch为2.2.1,NVIDIA驱动版本535.161.07File"/home/devil/anaconda3/envs/sample-factory/lib/python3.11/site-packages/torch/_tensor.py",line522,inbackwardtorch.autograd.backward(File"/home/devil/anaconda3/envs/sample-......
  • Halcon HObject和C#的Bitmap图像互转
    转载:https://blog.51cto.com/u_15088375/3247784#:~:text=HalconHObject和C%23的Bitmap图像互转1HalconHObject和C%23的Bitmap图像互转2一,Bitmap转HObject3方法一:HOperatorSet.GenImageInterleaved直接转换4方法二:C%23获取图像各个通道内存首地址和HOperatorSet.GenIma......