比较多个数组列表的长度,找出最长的一个
本文关键字:一个 数组 列表 比较 | 更新日期: 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);