有一对像数组,ArrayList arrayList = new ArrayList();将一数据库里的序号,长度,与数量读到这个数组中去,此时arrayList数组里有数据:
序号  长度  数量
1     1024  95
2     966   50
3     1651  23
4     568   15
5     732   10
现在要对arrayList数组里的数据进行比较,要将长度最长与数量最多的提取出来然后拿去计算(比如,拿1024 95去运算)。请问一下,要比较对像组数里的数据,要怎么比较。把比较好的数据拿来参与运算,要怎么个拿法。请高手指教一下,谢谢

解决方案 »

  1.   

    定义一个类:class A : ICompare
    {
        int Value;
        int Count;
        .....
        //实现Compare接口
        virtual int Compare(object _obj)
    {  
        return this.Count.Compare(((A)_obj).Cout);
    }  
    }重新把数据添加到一个ArrayList中,然后调用Sort方法!
      

  2.   

    先定义一个类,类中包含序号  长度  数量三个成员变量,然后以类的实例为对象add进去,而不是将每一个数都add进去,这样就很容易处理里面的数据了,想怎么样比较就怎么样比较
      

  3.   

    /// <summary>
    /// 节点排序规则
    /// </summary>
    public class NodeInfoComparer:IComparer
    {
    #region IComparer 成员 public int Compare(object x, object y)
    {
    return ((NodeInfo)x).LeftPoint.CompareTo(((NodeInfo)y).LeftPoint);
    } #endregion
    }
    NodeInfo改成你在ArrayList中对应的类
    d1=((NodeInfo)x).长度+((NodeInfo)x).数量;
    d2=((NodeInfo)y).长度+((NodeInfo)y).数量;
    return d1.CompareTo(d2);
      

  4.   

    arrayList.Sort(new NodeInfoComparer())
    排序一下OK了。
      

  5.   

    比较方便的就是建一个对象继承IComparable接口实现Compare方法
    如果懒的建对象就循环冒泡比较吧
      

  6.   

    问一下你向ArrayList arrayList = new ArrayList();插入数据的时候,是用DataRow吧那排完序后,取出需要的数据后强制类型转换一个(DataRow)arrayList ,后面就像对DataRow处理一样方法
      

  7.   

    是的,我是用DataRow
    但你的说的像对DataRow处理一样方法,这句怎么理解。
      

  8.   

    当从数据库中读取时,排好序然后在写入数组.
    可以先读到DATASET中