сравнить несколько длин массивов, чтобы найти самую длинную - PullRequest
1 голос
/ 17 января 2012

У меня есть 6 списков массивов, и я хотел бы знать, какой из них самый длинный, без использования набора IF IFATTS.

"if arraylist.count> anotherlist.count Then ...." <- Во всяком случае, сделать это, кроме этого? </p>

Примеры в 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.

Спасибо

Ответы [ 5 ]

2 голосов
/ 17 января 2012

Вы можете использовать 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);
}
2 голосов
/ 17 января 2012

Допустимо ли утверждение 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;
}
0 голосов
/ 17 января 2012

Если вы просто хотите длину самого длинного 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);
0 голосов
/ 17 января 2012

Если вы храните все в списке списков, например,

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

Тогда LINQ, как

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

выдаст список с наибольшим количеством предметов. Конечно, вам придется разбираться со случаем, когда есть галстук для самого длинного списка

0 голосов
/ 17 января 2012
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...