在c#程序中有一个double[][]格式数组,如何循环读取并删除第一个元素


目录

 方法1:使用`List `

 方法2:直接操作锯齿数组

 方法3:使用`Queue `

 总结


        在C#中,`double[][]`是一个锯齿数组(Jagged Array),即数组的数组。由于C#中的数组是固定长度的,无法直接删除元素,但可以通过创建一个新的数组来实现“删除第一个元素”的效果。

        以下是实现循环读取并删除第一个元素的方法:

 方法1:使用`List<double[]>`


        将锯齿数组转换为`List<double[]>`,利用`List`的灵活性删除第一个元素。

 代码实现:

/*-----------------------------------------------------------------------*/
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 示例二维锯齿数组
        double[][] array = new double[][]
        {
            new double[] { 1.1, 2.2, 3.3 },
            new double[] { 4.4, 5.5 },
            new double[] { 6.6, 7.7, 8.8, 9.9 }
        };

        // 将锯齿数组转换为List<double[]>
        List<double[]> list = new List<double[]>(array);

        // 循环读取并删除第一个元素
        while (list.Count > 0)
        {
            // 读取第一个元素
            double[] firstElement = list[0];
            Console.WriteLine("读取的第一个元素:");
            foreach (var item in firstElement)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            // 删除第一个元素
            list.RemoveAt(0);

            // 打印剩余数组
            Console.WriteLine("删除后的数组:");
            foreach (var subArray in list)
            {
                foreach (var item in subArray)
                {
                    Console.Write(item + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
}
/*-----------------------------------------------------------------------*/

 代码解析:
        1. `List<double[]>`:
           - 使用`List<double[]>`存储锯齿数组,方便动态删除元素。
        2. `RemoveAt(0)`:
           - 删除列表中的第一个元素。
        3. 循环读取:
           - 使用`while`循环,直到列表为空。

 方法2:直接操作锯齿数组


        如果不使用`List`,可以通过创建一个新的锯齿数组来实现“删除第一个元素”的效果。

 代码实现:

/*-----------------------------------------------------------------------*/
using System;

class Program
{
    static void Main()
    {
        // 示例二维锯齿数组
        double[][] array = new double[][]
        {
            new double[] { 1.1, 2.2, 3.3 },
            new double[] { 4.4, 5.5 },
            new double[] { 6.6, 7.7, 8.8, 9.9 }
        };

        // 循环读取并删除第一个元素
        while (array.Length > 0)
        {
            // 读取第一个元素
            double[] firstElement = array[0];
            Console.WriteLine("读取的第一个元素:");
            foreach (var item in firstElement)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            // 创建一个新的数组,删除第一个元素
            double[][] newArray = new double[array.Length - 1][];
            for (int i = 1; i < array.Length; i++)
            {
                newArray[i - 1] = array[i];
            }

            // 更新原数组
            array = newArray;

            // 打印剩余数组
            Console.WriteLine("删除后的数组:");
            foreach (var subArray in array)
            {
                foreach (var item in subArray)
                {
                    Console.Write(item + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
}
/*-----------------------------------------------------------------------*/

代码解析:
        1. 创建新数组:
           - 每次删除第一个元素时,创建一个新的锯齿数组,长度为原数组长度减1。
        2. 复制剩余元素:
           - 使用`for`循环将原数组中除第一个元素外的其他元素复制到新数组。
        3. 更新原数组:
           - 将新数组赋值给原数组。

 方法3:使用`Queue<double[]>`


        如果只需要按顺序读取并删除第一个元素,可以使用`Queue<double[]>`。

 代码实现:

/*-----------------------------------------------------------------------*/
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 示例二维锯齿数组
        double[][] array = new double[][]
        {
            new double[] { 1.1, 2.2, 3.3 },
            new double[] { 4.4, 5.5 },
            new double[] { 6.6, 7.7, 8.8, 9.9 }
        };

        // 将锯齿数组转换为Queue<double[]>
        Queue<double[]> queue = new Queue<double[]>(array);

        // 循环读取并删除第一个元素
        while (queue.Count > 0)
        {
            // 读取并删除第一个元素
            double[] firstElement = queue.Dequeue();
            Console.WriteLine("读取的第一个元素:");
            foreach (var item in firstElement)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();

            // 打印剩余数组
            Console.WriteLine("删除后的数组:");
            foreach (var subArray in queue)
            {
                foreach (var item in subArray)
                {
                    Console.Write(item + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
}
/*-----------------------------------------------------------------------*/

代码解析:
        1. `Queue<double[]>`:
           - 使用队列数据结构,方便按顺序读取并删除元素。
        2. `Dequeue`:
           - 读取并删除队列中的第一个元素。

 总结


        - `List<double[]>`:适合需要频繁删除和动态操作的场景。
        - 直接操作锯齿数组:适合不依赖集合类的场景,但性能较低。
        - `Queue<double[]>`:适合按顺序读取并删除元素的场景。

根据实际需求选择合适的方法即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值