1

我想知道如何将 3 个数组列表中的所有信息发送到一个数组。

Arraylist clubs = new Arraylist
Arraylist spades = new Arraylist
Arraylist hearts = new Arraylist.
int[] array = new int[52]

我在每个数组列表中获得了 1 到 13 的值,现在我想将三个数组列表的所有值复制到数组 [52]。

4

4 回答 4

8
clubs.CopyTo(array, 0);
spades.CopyTo(array, 13);
hearts.CopyTo(array, 26);
diamonds.CopyTo(array, 39);
于 2011-06-14T08:06:57.473 回答
6
var array = clubs.Concat(spades).Concat(heart).ToArray();

编辑:哎呀,TIL,这是我完全忘记ArrayList的那些旧类型之一。无论如何都不要打扰它:List<T>改用:

List<int> clubs = new List<int>(){1, 2, 3};
List<int> hearts = new List<int>(){4, 5, 6};
List<int> spades = new List<int>(){7, 8, 9};
var array = clubs.Concat(hearts).Concat(spades).ToArray();  

很抱歉发布无法编译的答案。但是话又说回来...... OP也没有编译......;)

于 2011-06-14T08:06:23.530 回答
3
ArrayList clubs = new ArrayList();
ArrayList spades = new ArrayList();
ArrayList hearts = new ArrayList();

int[] array = new int[52];

clubs.ToArray(typeof(int)).CopyTo(array, 0);
spades.ToArray(typeof(int)).CopyTo(array, clubs.Count);
hearts.ToArray(typeof(int)).CopyTo(array, spades.Count + clubs.Count);

代码不会检查每个 ArrayList 的长度,因此请确保它们不超过 13。

于 2011-06-14T08:12:39.670 回答
0

这是一个CopyTo ArrayList 方法。还有一个ToArray方法。区别?使用 ToArray 返回数组,因此为您创建它。唯一的事情是,在这种情况下,您需要将其转换为整数数组。性能明智?好吧,它们都是 O(n) 并且无论如何都调用 Array.Copy 。

这取决于您是否已经创建了要使用哪个数组。如果您要做的不仅仅是 1:1 复制,CopyTo 有一些额外的选项可能会引起您的兴趣。

于 2011-06-14T08:11:12.317 回答