Как найти минимальное число в массиве java
В Java 8 и выше можно использовать потоки streams для нахождения минимального числа в массиве. Для этого можно использовать метод min() класса java.util.stream.IntStream , который возвращает минимальное значение в потоке.
int[] numbers = 10, 20, 30, 40, 50>; int min = Arrays.stream(numbers).min().getAsInt(); System.out.println("Минимальное число: " + min);
Здесь мы создаем поток из массива numbers с помощью метода Arrays.stream() , а затем вызываем метод min() для нахождения минимального значения. Метод min() вернет объект OptionalInt , поэтому мы вызываем метод getAsInt() для получения примитивного значения int
Для нахождения минимального числа в массиве можно использовать цикл, проходящий по всем элементам массива и сохраняя минимальное значение в отдельную переменную. Вот пример кода:
public static int findMin(int[] arr) int min = arr[0]; for (int i = 1; i arr.length; i++) if (arr[i] min) min = arr[i]; > > return min; >
В данном примере функция findMin принимает в качестве аргумента массив целых чисел arr и возвращает минимальное число в массиве.
- Переменная min инициализируется значением первого элемента массива arr[0] .
- Затем происходит цикл по всем элементам массива, начиная со второго элемента arr[1] .
- Если текущий элемент меньше переменной min , ей присваивается значение текущего элемента.
- По завершении цикла возвращается значение переменной min .
Find Max and Min in an Array in Java
Learn to find the smallest and the largest item in an array in Java. We will discuss different approaches from simple iterations to the Stream APIs.
In the given examples, we are taking an array of int values. We can apply all the given solutions to an array of objects or custom classes as well. In the case of custom objects, we only need to override the equals() method and provide the correct logic to compare two instances.
int[] items = < 10, 0, 30, 2, 7, 5, 90, 76, 100, 45, 55 >; // Min = 0, Max = 100
1. Find Max/Min using Stream API
Java streams provide a lot of useful classes and methods for performing aggregate operations. Let’s discuss a few of them.
The Stream interface provides two methods max() and min() that return the largest and the smallest item from the underlying stream.
Both methods can take a custom Comparator instance if we want a custom comparison logic between the items.
For primitives, we have IntStream , LongStream and DoubleStream to support sequential and parallel aggregate operations on the stream items. We can use the java.util.Arrays.stream() method to convert the array to Stream and then perform any kind of operation on it.
int max = Arrays.stream(items) .max() .getAsInt(); // 100 int min = Arrays.stream(items) .min() .getAsInt(); // 0
In the above example, we find the array’s max and min items in two separate steps. We are creating the stream two times and operating on it two times. This is useful when we only have to find either the maximum item or the minimum item.
If we have to find the max and min item both then getting the max and min item from the array in a single iteration makes complete sense. We can do it using the IntSummaryStatistics instance. A similar instance is available for LongStream and DoubleStream as well.
IntSummaryStatistics stats = Arrays.stream(items).summaryStatistics(); stats.getMax(); //100 stats.getMin(); //0
2. Collections.min() and Collections.max()
The Collections class provides the aggregate operations for items in a collection such as List. We can convert an array into a List and use these APIs to find the max and min items.
In the given example, we are converting the int[] to Integer[]. If you have an Object[] already then you can directly pass the array to Arrays.asList() API.
Integer min = Collections.min(Arrays.asList(ArrayUtils.toObject(items))); Integer max = Collections.max(Arrays.asList(ArrayUtils.toObject(items)));
Sorting the array is also a good approach for small arrays. For large arrays, sorting may prove a performance issue so choose wisely.
In a sorted array, the min and max items will be at the start and the end of the array.
Arrays.sort(items); max = items[items.length - 1]; //100 min = items[0]; //0
This is the most basic version of the solution. The pseudo-code is :
Initialize the max and min with first item in the array Iterate the array from second position (index 1) Compare the ith item with max and min if current item is greater than max set max = current item elseif current item is lower than min set min = current item
After the loop finishes, the max and min variable will be referencing the largest and the smallest item in the array.
max = items[0]; min = items[0]; for (int i = 1; i < items.length; i++) < if (items[i] >max) < max = items[i]; >else if (items[i] < min) < min = items[i]; >> System.out.println(max); //100 System.out.println(min); //0
Recursion gives better performance for a big-size unsorted array. Note that we are writing the recursive call for max and min items, separately. If we need to find both items in a single invocation, we will need to change the program as per demand.
This solution is basically Divide and Conquer algorithm where we only handle the current index and the result of the rest (the recursive call) and merge them together for the final output.
For getting the maximum of items, at each item, we return the larger of the current items in comparison and all of the items with a greater index. A similar approach is for finding the minimum item.
min = getMax(items, 0, items[0]); //0 min = getMin(items, 0, items[0]); //100 public static int getMax(final int[] numbers, final int a, final int n) < return a >= numbers.length ? n : Math.max(n, getMax(numbers, a + 1, numbers[a] > n ? numbers[a] : n)); > private static int getMin(final int[] numbers, final int a, final int n)
In this short Java tutorial, we learned the different ways to find the maximum and the minimum element from an Array in Java. We learned to use the Stream API, Collections API, simple iterations, and advanced techniques such as recursion.
For smaller arrays, we should prefer the code readability and use the Stream or Collection APIs. For large arrays, where we will get noticeable performance improvements, using recursion can be considered.
4.6. Java примеры – Как найти минимальное и максимальное число в массиве
Как найти минимальный и максимальный элемент в массиве в Java?
Решение
В этом примере показано, как найти минимальное и максимальное число в массиве в Java с помощью методов Collection.max() и Collection.min() класса Collection.
import java.util.Arrays; import java.util.Collections; public class Main < public static void main(String[] args) < Integer[] numbers = < 8, 2, 7, 1, 4, 9, 5>; int min = (int) Collections.min(Arrays.asList(numbers)); int max = (int) Collections.max(Arrays.asList(numbers)); System.out.println("Минимальное число: " + min); System.out.println("Максимальное число: " + max); > >
Результат
Вышеприведенный пример кода даст следующий результат:
Минимальное число: 1 Максимальное число: 9
Еще один пример поиска минимального и максимального элементов в массиве.
public class HelloWorld < public static void main(String[] args) < int numbers[] = new int[]; int s = numbers[0]; int l = numbers[0]; for(int i = 1; i < numbers.length; i++) < if(numbers[i] >l)l = numbers[i]; else if (numbers[i] < s)s = numbers[i]; >System.out.println("Максимум: " + l); System.out.println("Минимум: " + s); > >
Вышеприведенный пример кода даст следующий результат:
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum