使用C#查找通用列表中的最高整数?

时间:2009-06-23 18:24:23

标签: c# .net-3.5

我有以下List<int>集合,我需要在集合中找到最高整数。它可以有任意数量的整数,我可以多次使用相同的整数值。

List<int> MyList = new List<int> { 3, 4, 6, 7, 9, 3, 4, 5, 5 };

用于查找最高整数的最简单算法是什么?我正在使用C#和.NET 3.5框架。

4 个答案:

答案 0 :(得分:69)

你可以这样做:

int max = MyList.Max();

有关详细信息,请参阅Enumerable.Max

答案 1 :(得分:9)

如果您需要经常检索最大值,您可能会考虑创建自己的列表类(或从List派生),它将最大项目保留在缓存中。这样的课程看起来像这样:

public class MaxList<T> : IList<T>, ICollection<T>, IEnumerable<T>
{
    T Maximum { get; set; }
    List<T> _list;

    public T this[int index] { get; set; }

    public void Add(T item)
    {
        if (item > this.Maximum)
        {
            this.Maximum = item;
        }
        _list.Add(item);
    }

    // ... IEnumerable<T>, ICollection<T> and IList<T> members 

}

或者,您可以直接从List派生并覆盖Add和Remove方法(基本上所有修改列表项的方法)并相应地更新缓存。

如果这种方法真的有益,取决于您的情况。如果你有一个非常大的列表很少更新,你需要经常检索最大值。否则,请选择已经建议的解决方案,因为它们更简单。

答案 2 :(得分:6)

Enumerable有一个Max函数可以执行此操作。

使用Reflector查看特定于整数method的实现,该方法循环遍历IEnumerable源中的每个元素,并将其与之前的最高值进行比较。

答案 3 :(得分:1)