Finding the max/min value in an array of primitives using Java
Нахождение максимального / минимального значения в массиве примитивов с помощью Java
Написать функцию для определения минимального / максимального значения в массиве тривиально, например:
/** * * @param chars * @return the max value in the array of chars */ privatestaticintmaxValue(char[] chars) { intmax= chars[0]; for (intktr=0; ktr < chars.length; ktr++) { if (chars[ktr] > max) { max = chars[ktr]; } } return max; }
но разве это где-то уже не сделано?
Переведено автоматически
Ответ 1
Использование Commons Lang (для преобразования) + Collections (для преобразования в min / max)
Обратите внимание, что Arrays.asList() оборачивает базовый массив, поэтому он не должен занимать слишком много памяти и не должен выполнять копирование элементов массива.
Ответ 2
Вы можете просто использовать новую Java 8 Streams, но вам придется поработать с int.
stream Метод служебного класса Arrays предоставляет вам, IntStream для чего вы можете использовать min метод. Вы также можете выполнить max, sum, average,...
Этот подход может обеспечить лучшую производительность, чем классический цикл, потому что summaryStatistics метод представляет собой операцию сокращения и допускает распараллеливание.
Ответ 3
В библиотеке Google Guava есть методы min и max для символов, целых чисел, длин и т.д. классы.
Таким образом, вы можете просто использовать:
Chars.min(myarray)
Никаких преобразований не требуется, и, предположительно, это эффективно реализовано.
Ответ 4
Сортируя массив, вы получаете первое и последнее значения для min / max.
import java.util.Arrays;
publicclassapples {
publicstaticvoidmain(String[] args) { int a[] = {2,5,3,7,8}; Arrays.sort(a);
intmin=a[0]; System.out.println(min);
int max= a[a.length-1]; System.out.println(max); }
}
Хотя операция сортировки обходится дороже, чем простой поиск минимальных / максимальных значений с помощью простого цикла. Но когда производительность не вызывает беспокойства (например, небольшие массивы или стоимость не имеет значения для вашего приложения), это довольно простое решение.
Примечание: после этого массив также будет изменен.