比较多个数组列表的长度,找出最长的一个

本文关键字:一个 数组 列表 比较 | 更新日期: 2023-09-27 18:20:45

我有6个数组列表,我想知道哪一个是最长的,而不使用一堆IF语句。

"如果arraylist.count>anotherlist.count,则……"<-不管怎样,除了这个,还能做这个吗?

VB.net或C#.net(4.0)中的示例将非常有用。

arraylist1.count
arraylist2.count
arraylist3.count
arraylist4.count
arraylist5.count
arraylist6.count
DIM longest As integer = .... 'the longest arraylist should be stored in this variable.

感谢

比较多个数组列表的长度,找出最长的一个

1 if语句可接受吗?

public ArrayList FindLongest(params ArrayList[] lists)
{
   var longest = lists[0];
   for(var i=1;i<lists.Length;i++)
   {
       if(lists[i].Length > longest.Length)
          longest = lists[i];
   }
   return longest;
}

您可以使用Linq:

public static ArrayList FindLongest(params ArrayList[] lists)
{
    return lists == null 
        ? null
        : lists.OrderByDescending(x => x.Count).FirstOrDefault();
}

如果你只想要最长列表的长度,那就更简单了:

public static int FindLongestLength(params ArrayList[] lists)
{
    return lists == null 
        ? -1 // here you could also return (int?)null,
             // all you need to do is adjusting the return type
        : lists.Max(x => x.Count);
}

如果您将所有内容都存储在列表列表中,例如

List<List<int>> f = new List<List<int>>();

然后是类似LINQ的

List<int> myLongest = f.OrderBy(x => x.Count).Last();

将生成项目数最多的列表。当然,当最长列表出现平局时,您必须处理这种情况

SortedList sl=new SortedList();
foreach (ArrayList al in YouArrayLists)
{
  int c=al.Count;
  if (!sl.ContainsKey(c)) sl.Add(c,al);
}
ArrayList LongestList=(ArrayList)sl.GetByIndex(sl.Count-1);

如果您只想要最长ArrayList:的长度

public int FindLongest(params ArrayList[] lists)
{
    return lists.Max(item => item.Count);
}

或者,如果你不想写函数,只想内联代码,那么:

int longestLength = (new ArrayList[] { arraylist1, arraylist2, arraylist3, 
    arraylist4, arraylist5, arraylist6 }).Max(item => item.Count);