Найти самое высокое целое число в Универсальном Списке с помощью C#?

AsyncTask предназначен для выполнения не более нескольких секунд операции, выполняемой в фоновом режиме (не рекомендуется для загрузки файлов с сервера в мегабайтах или для выполнения ресурсоемких задач, таких как операции ввода-вывода файла). Если вам нужно выполнить длительную операцию, вам настоятельно рекомендуется использовать нативные потоки Java. Java предоставляет вам различные связанные с потоками классы, чтобы делать то, что вам нужно. Используйте Handler для обновления пользовательского интерфейса.

10
задан Michael Kniskern 15 December 2011 в 20:19
поделиться

4 ответа

Вы можете просто сделать:

int max = MyList.Max();

Подробнее см. Enumerable.Max .

69
ответ дан 3 December 2019 в 13:11
поделиться

Enumerable имеет функцию Max , которая будет делать это.

Если посмотреть на реализацию целочисленного метода с использованием Reflector, метод зацикливается через каждый элемент в источнике IEnumerable и сравнивает его с тем, что ранее было самым высоким значением.

6
ответ дан 3 December 2019 в 13:11
поделиться

Если вам нужно часто получать максимальное значение, вы можете подумать о создании своего собственного класса списка (или производного от 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 (в основном все методы, изменяющие элементы списка) и соответствующим образом обновить кеш.

Если такой подход действительно является выгода зависит от вашего сценария. Это определенно нужно, если у вас очень большой список, который редко обновляется, и вам нужно часто получать максимум. В противном случае используйте уже предложенные решения, потому что они намного проще.

9
ответ дан 3 December 2019 в 13:11
поделиться

genericlist.Remove(genericlist.Max)

1
ответ дан 3 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: