c# 数组和集合

数组是最为常见的一种结构,是相同类型的、用一个标识符封装到一起的j基本类型数据序列或对象序列,可以用一个统一的数组名和下标来唯一确定数组中的元素。实质上数组是一个简单的线性序列,因此数组访问起来很快。而集合可以看成一种特殊的数组,它也可以存储多个数据,C#中常用的集合包括ArrayList集合和 Hashtable (哈希表)
声明数组
int[] arr; 声明int形数组
string[] str;
为数组分配空间
arr = new int[5];
说明:使用new创建数组后,数组的所有元素初始值都是0
声明时候就创建数组
int[] month = new int[12];
数组初始化
int[] arr = new int[]{1,2,3,4,5};
int[] arr = {1,2,3,4,5};
二维数组
int [,] arr;
为数组分配空间
int[,] a = new int[2,4];
分别为每一维数组分配内存
int[][] a = new int[12][];
a[0] = new int[2];
a[1] = new int[3];
二维数组初始化
int[,] arr = new int[,] {{12,1},{3,4}}
int[,] arr = {{1,2},{3,4}};
遍历数组
foreach(val in arr) {}
添加数组元素
数组排序
Array.sort 对一维数组排序
Array.Reveerse 反转一维数组 最后一个元素变成第一个元素
ArrayList
ArrayList 类位于system.collections命名空间下,它可以动态的添加和删除元素,可以将array list类看作扩充了功能的数组,但他并不等于数组
  • 与数组相比 array list增加了
  • 数组容量可以需要自动扩充
  • array list提供了添加删除 和插入某一范围的方法
  • 提供了只读和固定大小包装返回到集合的方法
  • array list只能是一维数组
构造器
无参构造器
ArrayList a = new Arraylist();
传入一个collection
int[] arr = { 1,2,3,4};
ArrayList a = new ArrayList(arr);
指定大小初始化
ArrayList a = new Arraylist(32);
Insert
将元素插入到集合的指定处
arr.Insert(3,"aa"); 插入到位置3
Add
add允许null元素,并且允许重复元素
Clear
移除ArrayList 所有元素
Remove
移除特定值的第一个匹配项
arr.Remove(3);
RemoveAt
移除指定key的元素
arr.RemoveAt(3); key==3
RemoveRange
移除范围内的元素
arrRemoveRange(start,count);
Count
获取实际元素数
IsFiexedSize
获取一个值,判断是否有固定大小
IsReadOnly
获取一个值,判断是否只读
Item
获取或设置指定索引元素
public virtual int Capacity{get;set;}
获取或设置ArrayList可包含的元素数。
public virtual int Count{get;}
获取ArrayList中实际包含的元素数。
Capacity是ArrayList可以存储的元素数。Count是ArrayList中实际包含的元素数。Capacity总是大于或等于Count。如果在添加元素时,Count超过Capacity,则该列表的容量会通过自动重新分配内部数组加倍。
如果Capacity的值显式设置,则内部数组也需要重新分配以容纳指定的容量。如果Capacity被显式设置为0,则公共语言运行库将其设置为默认容量。默认容量为16。
在调用Clear后,Count为0,而此时Capacity却是默认容量16,而不是0
public virtual void TrimToSize();
将容量设置为ArrayList中元素的实际数量。
如果不向列表中添加新元素,则此方法可用于最小化列表的内存系统开销。
若要完全清除列表中的所有元素,请在调用TrimToSize之前调用Clear方法。截去空ArrayList会将ArrayList的容量设置为默认容量,而不是零。
ArrayList中的查找 可以用 Contains IndexOf LastIndexOf
public bool Contains(Object item);
用来确定某元素是否存在array list集合中 。
item :要在array list中查找的object,该值可以为空引用
返回值:如果找到 返回 true 否则 false
Console.WriteLine(a.Contains(3));
HashTable
hasttable 通常称为哈希表,表示 建/值对的集合,这些键值对根据建的哈希代码进行组织。每个元素都是一个存贮在DictionaryEntry对象中的键值对。建不可以为空引用,但是值可以.
初始化
public Hashtable();
无参数的初始化,默认加载因子 默认哈希代码提供程序和默认比较器来初始化
public Hashtable(int capacity);
使用指定容量来初始化
添加数据
Hashtable a = new Hashtable();
a.Add("id","bh001");
a.Add("name","tm");
a.Add("sex","man");
Console.WriteLine(a.Count);
遍历
foreach (DictionaryEntry d in a) {
Console.WriteLine("\t " + d.Key+"\t"+d.Value);
}
Clear
移除所有元素
Remove
删除指定的key
查找
可以使用Contains方法 ContainsKey ContainsValue 方法。
Contains
确定hashtable里面是否有特定的key
Console.WriteLine(a.Contains("name"));
ContainsValue
是否包含指定的值
Console.WriteLine(a.ContainsValue("tm"));

 

转载于:https://www.cnblogs.com/gwyy/p/8028858.html

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

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

相关文章

和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?

缘起 我在《栈又溢出了》一文中记录了一个奇怪的栈溢出问题。虽然解决了,但是总感觉哪里不太合理。我想,vs 一定有一个合理的设置。一起折腾起来吧!查找工程设置 本以为能找到某个编译选项对局部变量占用内存的行为进行控制。看遍了工程设置也…

在ubuntu 16.04上安装tensorflow,并测试成功

用下面代码测试安装: 1 #! /usr/bin/python2 # -*- coding: utf-8 -*-3 4 import tensorflow as tf5 import numpy6 import matplotlib.pyplot as plt7 rng numpy.random8 9 learning_rate 0.01 10 training_epochs 1000 11 display_step 50 12 #数据集x 13 tra…

redis客户端连接数量_实战解析无所不知的Redis拓展应用——Info,进阶学习,无所不能...

前言学习是一个持续的过程。像咱们一直在更新的Redis学习内容,由基础结构,到原理应用,再到集群搭建,了解的够充分了,咱们接着又介绍Redis拓展应用,将知识面拓宽,毕竟技术都是相通的,…

【Excle数据透视】如何用含有单元格的数据来创建数据透视

取消合并单元格,填充相同内容项,然后创建数据透视表. 如下图:需要使用数据创建数据透视表 步骤一 开始→格式刷,然后对单元格区域G2:G15使用格式刷功能,保留合并单元格格式 步骤二 选中A2:A18区…

css 超出文字头尾相接滚动_前端的一些雕虫小技,从100%和滚动条说起

1、100%和滚动条当我们在css中把html和body同时设为100%时,会出现滚动条html,body {width: 100%;height: 100%;}原因是html和body之间有8px的margin,这个margin怎么来的呢,我们在chrome中用F12看一下这个8px的margin来自于user agent stylesh…

小学生都能看懂的FFT!!!

小学生都能看懂的FFT!!! 前言 在创新实践中心偷偷看了一天FFT资料后,我终于看懂了一点。为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记。 食用指南: …

ComboBox自动补全小技巧

网上看的自动补全实在是太麻烦,有时候还用到了第三方控件,但是现在我的需求是这样的 有一个Person类,其中有Code、Name两个属性 Person需要绑定到ComboBox中,在ComboBox中输入Code时,即自动补全相应的Name 想了半天&am…

可做fft分析吗_小吃店生意好做吗,小吃业行情分析

现在创业已经成为一种风尚,不少创业者都打算开一家小吃店,现在小吃店的生意好做吗?开小吃店有没有前景呢?中国人一直以来都非常看重“吃”,民以食为天,食物就是中国人生存的灵魂所在。基本上每个城市、每个…

ase加密放linux报错_Linux应用安装有福啦!和苹果Mac一样方便的单文件安装

自从用了苹果macbook,和windows基本上就再见了,苹果系统的稳定性太出色了,使用完合上盖子放十天半个月的没一点问题,一叫就醒,一醒就能接着工作,windows系统不行,要么睡了叫不醒,要么…

拼图展示

转载于:https://www.cnblogs.com/zm1994/p/8033332.html

c++全局监听ctrl s_号称史上最全!134个CAD快捷键强烈来袭,难道你只知道Ctrl+C?...

想要提高CAD绘图速率你就必须熟记CAD快捷键,小编盘点了134个CAD个快捷键,号称史上最全,一起来看看吧。一、常用字母键CO:复制MI:镜像AR:阵列O:偏移RO:旋转M:移动E&#x…

51nod 1623 完美消除(数位DP)

首先考虑一下给一个数如何求它需要多少次操作。 显然用一个单调栈就可以完成:塞入栈中,将比它大的所有数都弹出,如果栈中没有当前数,答案1。 因为数的范围只有0~9,所以我们可以用一个二进制数来模拟这个栈,…

代码 拉取_Git 利用 Webhooks 实现代码的自动拉取

WebHook 简介WebHook 功能是帮助用户 push 代码后,自动回调一个您设定的 http 地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序。环境服务器:ubuntuphp:7.2.28本文以拉取码云&#xf…

navicat连接mysql报10061错

可能原因:mysql服务未启动 解决办法:进入到计算机管理,找到服务,然后找到mysql服务,并启动该服务 转载于:https://www.cnblogs.com/mengyinianhua/p/8041201.html

长牙顺序

20个乳牙宝宝的诞生是有顺序的,虽然不一定一成不变,但是也可以作为参照的依据。 1.下乳中切牙 2.上乳中切牙 3.上乳侧切牙 4.下乳侧切牙 5.下第一乳磨牙 6.上第一乳磨牙 7.下乳尖牙 8.上乳尖牙 9.下第二乳磨牙 10.上第二乳磨牙 5~10个月&…

python天蝎座-day1笔记

一、接口测试即功能测试 最常见: get post 二、jmeter参数化有三种方法: 1、jmeter-选项-函数助手对话框-random-输入最小值和最大值,生成-将生成的函数字符串赋值到需要函数化的参数 2、添加配置元件:CSV Data Set Config&#x…

MYSQL高可用-Percona XtraDB Cluster

简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交。 2).多主复制,可以在任意节点进行写操作。 3).在从服务器上并行应用事件…

python 矩阵点乘_Day276:普通乘积、矩阵点乘、克罗内克积

1、普通矩阵乘法(matmul product)假设矩阵A大小是M*N,矩阵B大小是N*P,CAB这里选取一个例子这里的矩阵乘法要求相乘的两个矩阵一个的行数得等于另一个的列数,否则,无法进行乘机运算。2、矩阵点乘(hadamard product)矩阵点乘&#x…

随机排列_图片视频特效一键生成,27 种特效可随机排列组合!

酷友们,大家好!相信很多酷友喜欢刷抖音,抖音视频中有很多特效也很酷。其实这些特效称作故障艺术(Glitch Art),就是利用事物形成的故障,进行艺术加工,使这种故障缺陷反而成为一种艺术品,具有特殊…

JMter随记

线程组( Threads (Users))理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。 注意事项:线程间变量相互独立。 一个测试计划内可以包含多个线程组。 可定义内容: 取样…