iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#常用数据结构之数组Array
  • 305
分享到

C#常用数据结构之数组Array

2024-04-02 19:04:59 305人浏览 泡泡鱼
摘要

一、概述 数组为引用类型,其中的元素固定。 定义后不能增加删除元素。(如果事先不知道应包含多少元素,则应使用List集合)。数组可以包含同一类型的多个元素。 数组实现了IEumera

一、概述

数组为引用类型,其中的元素固定。 定义后不能增加删除元素。(如果事先不知道应包含多少元素,则应使用List集合)。数组可以包含同一类型的多个元素。

数组实现了IEumerable,ICollection,IList接口的部分功能。

二、声明数组变量及使用

1、一维数组:[]

声明及初始化:

int[] arr1 = new int[5];//声明带5个元素的数组
//或者
int[] arr2 = new int[] { 1, 3, 5, 7, 9 };
//或者
int[] arr3 = { 1, 3, 5, 7, 9 };

数组元素为引用类型:

Person[] arrPerson = new Person[2];
arrPerson[0] = new Person {"a","af"};
Person[] arrPerson2 = {new Person {"a","af"},new Person {"c","cf"}}

访问数组元素,为数组元素赋值:

int a = arr1[0];//整数索引。
arr1[3] = 7;

遍历

for (int i = 0; i < arr1.Length; i++)
{
    Console.WriteLine(i + "," + arr1[i]);
}
//或者
foreach (int item in arr2)
{
    Console.WriteLine(item);
}

2、二维数组:[,]

声明及初始化:

int[,] arr1 = new int[2, 3];//两行三列
int[,] arr2 = { { 1, 2, 3 }, { 4, 5, 6 } };

访问数组元素,为数组元素赋值:

arr1[0, 2] = 25;//为数组的第一行第三列元素赋值为25

遍历:

for (int i = 0; i < arr1.GetLength(0); i++)
{
    for (int j = 0; j < arr1.GetLength(1); j++)
    {
        Console.WriteLine(i + "," + j + "," + arr1[i, j]);
    }
}

3、锯齿数组:[][]

每一行的元素个数可以不一样,数组的数组。

声明及初始化:

int[][] arr1 = new int[][]
{
   new int[] { 1, 2 },new int[] {3,4,5}
};

访问数组元素,为数组元素赋值:

arr1[0] = new int[] { 1, 2 };
arr1[1] = new int[] { 3, 4, 5 };

遍历:

for (int i = 0; i < arr1.Length; i++)
{
    for (int j = 0; j < arr1[i].Length; j++)
    {
        Console.WriteLine(i + "," + j + "," + arr1[i][j]);
    }
}

三、Array类

Arrary类为抽象类,用括号[]声明是C#中使用Array类的简写形式。

Array array = Array.CreateInstance(typeof(int), 5);//相当于 int[] array=new int[5];
for (int i = 0; i < 5; i++)
{
    array.SetValue(33, i);
}
for (int i = 0; i < 5; i++)
{
    Console.WriteLine(array.GetValue(i));
}

Arrary类实现了以下接口:

  • IEumerable:使用foreach语句遍历,必须实现此接口。
  • ICollection:IEumerable
  • IList:ICollection
  • ICloneable

四、Array类的成员

  • Length : 获取 Array 的所有维度中的元素总数。
  • Rank: 获取 Array 的秩(维数)。 例如,一维数组返回 1,二维数组返回 2,依次类推。
  • GetLength(Int32): 获取一个 32 位整数,该整数表示 Array 的指定维中的元素数。
  • GetLowerBound(Int32) : 获取数组中指定维度第一个元素的索引。
  • GetUpperBound(Int32): 获取数组中指定维度最后一个元素的索引。

五、Array类的静态方法

1、Array.Sort 排序

1、使用 Array 中每个元素的 IComparable 实现,对一维 Array 中的部分元素进行排序。

public static void Sort (Array array, int index, int length);

实例:

void Main()
{
    Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
    Array.Sort(ArrPerson);
    foreach (Person p in ArrPerson)
    {
        Console.WriteLine(p);
    }
}

public class Person : IComparable
{
    public string FirstName;
    public string LastName;
    public Person(string firstName, string lastName)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
    }
    public int CompareTo(object obj)
    {
        Person other = obj as Person;
        int result = this.LastName.CompareTo(other.LastName);//如果实例应排在参数对象前面,返回负数;如果实例应排在参数对象后面,返回整数;如果实例与参数对象相等,返回0;
        if (result == 0)
        { result = this.FirstName.CompareTo(other.FirstName); }
        return result;
    }
}

2、使用指定的 IComparer,对一维 Array 中的部分元素进行排序。

comparer:比较元素时要使用的 IComparer 实现。或 若为 null,则使用每个元素的 IComparable 实现。

public static void Sort (Array array, int index, int length, System.Collections.IComparer comparer);

实例:

void Main()
{
    Person[] ArrPerson = { new Person("ab", "bb"), new Person("ca", "ab") };
    Array.Sort(ArrPerson, new PersonComparer());
    foreach (Person p in ArrPerson)
    {
        Console.WriteLine(p);
    }
}
public class Person
{
    public string FirstName;
    public string LastName;
    public Person(string firstName, string lastName)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
    }
}

public class PersonComparer : IComparer
{
    public int Compare(object x, object y)
    {
        Person p1 = x as Person;
        Person other = y as Person;
        int result = p1.LastName.CompareTo(other.LastName);
        if (result == 0)
        { result = p1.FirstName.CompareTo(other.FirstName); }
        return result;
    }
}

2、Array.Reverse(Array, Int32, Int32) 反转

反转一维 Array 中某部分元素的元素顺序。

3、Array.IndexOf(Array, Object, Int32, Int32) 查找位置

在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围从指定数量的元素的指定索引开始。

4、Array.LastIndexOf(Array, Object, Int32, Int32)

搜索指定的对象并返回一维 Array 中包含指定数目元素且在指定索引处结尾的元素范围内的最后一个匹配项的索引。

5、Array.Clear(Array, Int32, Int32) 清除元素的值

将数组中的某个范围的元素设置为每个元素类型的默认值。元素个数不变

6、Array.Copy(Array, Int32, Array, Int32, Int32) 复制到一个已有数组

复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 32 位整数。

7、Array.Clone() 创建一个新数组

创建 Array 的浅表副本。

到此这篇关于C#常用数据结构之数组Array的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#常用数据结构之数组Array

本文链接: https://www.lsjlt.com/news/148340.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#常用数据结构之数组Array
    一、概述 数组为引用类型,其中的元素固定。 定义后不能增加删除元素。(如果事先不知道应包含多少元素,则应使用List集合)。数组可以包含同一类型的多个元素。 数组实现了IEumera...
    99+
    2024-04-02
  • C++之array数组如何使用
    本篇内容介绍了“C++之array数组如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!定义和初始化数组数组是一个复合类型,可以通过类似...
    99+
    2023-07-05
  • python常用数据结构元组详解
    目录Tuple 元组元组的定义和使用元组常用方法index(item)count(item):返回某个元素出现的次数元组解包元组与列表Tuple 元组 元组的定义和使用 元组的定义:...
    99+
    2024-04-02
  • Redis之常用数据结构哈希表
    目录1.哈希冲突2.链式哈希3.rehash4.渐进式 rehash5.rehash 触发条件哈希表是一种保存键值对(key-value)的数据结构 哈希表优点在于,它能以 O(1) 的复杂度快速查询数据。 怎么做到的呢...
    99+
    2023-04-11
    Redis常用数据结构-哈希表 数据结构之哈希表 Redis哈希表
  • C++数据结构之list详解
    目录前言一、list的节点二、list的迭代器2.1 const 迭代器2.2 修改方法二、美中不足三、迭代器的分类3.x std::find的一个报错总结前言 list相较于vec...
    99+
    2024-04-02
  • C++数据结构之单链表
    目录单链表结构的定义单链表打印动态申请一个结点单链表尾插单链表尾删单链表头插单链表头删求单链表长度单链表查找单链表在pos位置插入单链表在pos后面位置插入单链表删除pos位置单链表...
    99+
    2024-04-02
  • C++数据结构之堆详解
    目录堆的概念提示:完全二叉树堆的性质最大堆最小堆代码定义有限数组形式动态数组形式操作向下调整结点建立堆初始化打印堆测试main函数结果完整代码堆的概念 堆(heap)是计算机科学中一...
    99+
    2024-04-02
  • JavaScript数组Array的一些常用方法总结
    目录一.JavaScript中创建数组的方式二、数组方法概括三、方法详解1.join()2.pop()3.shift()4.push()5.unshift()6.concat...
    99+
    2024-04-02
  • C++数据结构之双向链表
    本文实例为大家分享了C++数据结构之双向链表的具体代码,供大家参考,具体内容如下 #include <iostream> using std::cout; using ...
    99+
    2024-04-02
  • C++数据结构之链表详解
    目录前言一、删除链表中给定值为key的节点二、反转链表三、返回链表的中间节点四、删除链表的倒数第K个节点五、分割链表六、合并两个有序链表七、删除有序链表中重复节点八、环形链表九、相交...
    99+
    2024-04-02
  • C++教程之array数组使用示例详解
    目录背景定义和初始化数组字符数组的定义理解复杂的数组声明指针与数组指针是迭代器指针的算术运算解引用和指针的算术运算下标与指针最后背景 上一篇文章我们介绍了C++中的迭代器,这篇文章...
    99+
    2023-03-08
    C++ array数组教程 C++ array
  • 浅谈Java数据结构之稀疏数组知识总结
    稀疏数组 当一个数组中的元素大多为0或者相同元素的时候,可以用稀疏数组来压缩 稀疏数组只记录 行row 列col 值value 将下列的二维数组转为稀疏数组,如下...
    99+
    2024-04-02
  • 详解C语言数据结构之栈
    目录栈的链式实现主要内容代码实现:总结栈的链式实现 主要内容 (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom...
    99+
    2024-04-02
  • C++数据结构之AVL树的实现
    目录1.概念(1)二叉搜索树的缺点(2)定义节点2.插入(1)拆分(2)找节点与插节点(3)更新平衡因子与旋转3.判断4.完整代码及测试代码完整代码测试代码1.概念 (1)二叉搜索树...
    99+
    2024-04-02
  • C++高级数据结构之并查集
    目录1.动态连通性2.union-find算法API3.quick-find算法4.quick-union算法5.加权quick-union算法6.使用...
    99+
    2024-04-02
  • Java数据结构之稀疏数组的实现与应用
    目录1.稀疏数组引入1.1 使用场景1.2 稀疏数组简介2.稀疏数组的实现2.1 案例概述2.2 思路分析2.3 代码实现1.稀疏数组引入 1.1 使用场景 笔者在课程设计中曾写过一...
    99+
    2022-11-13
    Java 数据结构 稀疏数组 Java 稀疏数组
  • C++高级数据结构之线段树
    目录前言:高级数据结构(Ⅲ)线段树(Segment Tree)线段树的原理树的创建单点修改区间查找完整代码及测试前言: 高级数据结构(Ⅲ)线段树(Segment Tree)线段树的原...
    99+
    2024-04-02
  • Python之数组模块——array
    该模块定义了一个对象类型,可以表示一个基本值的数组:整数、浮点数、字符。 数组模块array的大部分属性及方法的应用: import array #array.array(typecode,[initializer])——typeco...
    99+
    2023-01-31
    数组 模块 Python
  • golang数据结构之golang稀疏数组sparsearray详解
    目录一、稀疏数组1. 先看一个实际的需求2. 基本介绍3. 应用实例一、稀疏数组 1. 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能 分析按照原始的方式来的二维...
    99+
    2024-04-02
  • python数据结构之 set
     在数学概念中,被意为整合元素的定义区域在python中,set最大的作用是用来去重 set常见操作:In [158]: s ={1,1,1,1,2,22,33,3,3,3} In [159]: sOut[159]: {1,2, 3, 22...
    99+
    2023-01-31
    数据结构 python set
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作