将数字放入数组到arraylist

时间:2010-12-28 08:42:30

标签: c# winforms arrays arraylist mergesort

我有用户在textBox3中输入的数字,我将它们转换为数组nums现在我想将其中一半放入arraylist A中,其中一半放在arraylist B中我该怎么做?谢谢

 string[] source = textBox3.Text.Split(',');

 int[] nums = new int[source.Length];

 for (int i = 0; i < source.Length; i++)
 {
     nums[i] = Convert.ToInt32(source[i]);
 }

   ArrayList A = new ArrayList();

   ArrayList B = new ArrayList();

编辑:

谢谢,我测试了你的答案,但你输出的所有代码都是system.collection.generic [system.int32],问题是什么?谢谢

例如,我测试了ArsenMkrt写道:

  private void button1_Click(object sender, EventArgs e)
    {
        string[] source = textBox3.Text.Split(',');
        int[] nums = new int[source.Length];

List<int> A = nums.Take(source.Length/2).ToList();

List<int> B = nums.Skip(source.Length/2).ToList();


            MessageBox.Show(B.ToString());
        }

5 个答案:

答案 0 :(得分:5)

由于拳击问题,不建议使用数组列表,因此请使用列表:

List<int> lst1 = new List<int>();
lst1.AddRange(nums.Skip(nums.Length/2));

List<int> lst2 = new List<int>();
lst2.AddRange(nums.Take(nums.Length / 2));

第一个列表包含长度/ 2到长度,第二个列表包含第一个项目到长度/ 2

修改:请参阅101 linq sample了解与linq的对比。

编辑:用于显示列表中的项目应该遍历列表,list.ToString()返回列表类型请参阅MSDN ToString而不是项目,因此您应该覆盖它并使用您的特定列表或者做:

foreach (var i in lsss)
{
  MessageBox.Show(i.ToString());
}

或者

lst1.ForEach(x=>MessageBox.Show(x.ToString()));

或者

string strList = "";
lst1.ForEach(x => strList += x + " , ");
MessageBox.Show(strList);

答案 1 :(得分:1)

   string[] source = textBox3.Text.Split(',');
   var nums = source.Select(s=>Convert.ToInt32(s));

   ArrayList A = new ArrayList(nums.Take(source.Length/2));

   ArrayList B = new ArrayList(nums.Skip(source.Length/2));

或者要使用值类型更快的通用List,可以编写

  List<int> A = nums.Take(source.Length/2).ToList();

  List<int> B = nums.Skip(source.Length/2)).ToList();

答案 2 :(得分:1)

for (int i = 0; i < nums.Length; i++)
 {
 if(i < nums.Length / 2) A.Add(nums[i]);
         else B.Add(nums[i]);
 }

这适用于所有.NET。考虑使用通用List<int>,您将避免装箱/取消装箱,并可能InvalidCastException

答案 3 :(得分:1)

ArrayList A = new ArrayList();

ArrayList B = new ArrayList(); 

for (int i = 0; i < source.Length; i++) 
{
     if(i % 2 == 1)
          A.Add(Convert.ToInt32(source[i]));
     else
          B.Add(Convert.ToInt32(source[i]));
}

答案 4 :(得分:1)

假设数组长度为偶数

 ArrayList A = new ArrayList();  
 ArrayList B = new ArrayList();     
 int backword = source.Length / 2;
 int forward = 0;
 for (int i = 0; i < source.Length/2; i++) 
  {   

   A.Add(Convert.ToInt32(source[++forward]));
   A.Add(Convert.ToInt32(source[++backword]));


 }