首页 > 解决方案 > 从列表到交错数组

问题描述

我正在尝试将 a 转换List<T>Jagged Array T [][]. 但是锯齿状数组中的每个数组都在重复列表的前 N ​​个元素。我知道我的代码正是这样做的,但是我怎样才能以不同的方式迭代我的列表,这样我就不会遍历相同的 N 个元素?

请忽略DataTree<T>类型,它只是用于创建锯齿状数组的参考数据结构拓扑。

  public static T[][] ToJaggedArrray<T>(this List<T> data, DataTree<T> dataTree)
        {
            // Get total elements on each row
            //dataTree.DataCount = total elements in data structure
            int totalElementsPerArray = dataTree.DataCount / dataTree.BranchCount;

            // dataTree.BranchCount = number of elemets/rows
            int numElements = dataTree.BranchCount;



            T[][] outPut = new T[numElements][];

            for (int i = 0; i < outPut.Length; i++)
            {
                T[] temp = new T[totalElementsPerArray];

                for (int j = 0; j < temp.Length; j++)
                {
                    temp[j] = data[j];

                }

                outPut[i] = temp;
            }

            return outPut;
        }

/* Output:

54
19
83
80
28
48
46
16
52
38
41
10

Element(0): 54 19 83 80
Element(1): 54 19 83 80
Element(2): 54 19 83 80

*/


/* Expected Output:

54
19
83
80
28
48
46
16
52
38
41
10

Element(0): 54 19 83 80
Element(1): 28 48 46 16
Element(2): 52 38 41 10

*/

标签: c#listjagged-arrays

解决方案


我相信您的问题是您不了解循环。在您的情况下,嵌套的 for 循环将始终从 0 开始,并且始终会从数据中准确获取 temp.length 元素。

你明白我的意思了吗?


推荐阅读