Java 如何找到矩阵的每列的最大值和最小值
在Java中,数组是一个对象。它是一种非原始数据类型,用于存储相同数据类型的值。在Java中,矩阵实际上就是一个多维数组,它表示多行和多列。
在这里,我们有一个包含一组元素的矩阵,根据问题的要求,我们需要找出该矩阵每列的最大和最小元素。
让我们深入这篇文章,了解如何使用Java编程语言完成这个任务。
一些实例
实例-1
给定矩阵 =
21 22 23
24 25 26
27 28 29
- 第一列最大的元素是27
-
第二列最大的元素是28
-
第三列最大的元素是29
-
第一列最小的元素是21
-
第二列最小的元素是22
-
第三列最小的元素是23
实例-2
给定矩阵=
121 222 243 432
124 245 256 657
237 258 229 345
176 453 756 343
- 第2列中的最大元素为453
-
第3列中的最大元素为756
-
第4列中的最大元素为657
-
第1列中的最小元素为121
-
第2列中的最小元素为222
-
第3列中的最小元素为229
-
第4列中的最小元素为343
实例-3
给定矩阵 =
1 2 3
4 5 6
7 8 9
- 第一列中最大的元素是7
-
第二列中最大的元素是8
-
第三列中最大的元素是9
-
第一列中最小的元素是1
-
第二列中最小的元素是2
-
第三列中最小的元素是3
步骤
步骤-1:(使用嵌套for循环)
-
步骤1 - 定义一个二维矩阵。
-
步骤2 - 获取行数和列数。
-
步骤3 - 使用嵌套循环找到每一列中的最大元素。将列中的每个元素与当前的最大值进行比较,如果找到更大的元素,则更新最大值。
-
步骤4 - 使用另一个嵌套循环找到每一列中的最小元素。将列中的每个元素与当前的最小值进行比较,如果找到更小的元素,则更新最小值。
-
步骤5 - 将结果作为输出打印出来。
步骤2:(使用流API)
-
步骤1 - 定义一个二维矩阵。
-
步骤2 - 获取列数。
-
步骤3 - 使用for循环和Java流API找到每一列中的最大元素。将每一列中的元素映射到一个整数流,并找到该流中的最大值。
-
步骤4 - 使用另一个for循环和Java流API找到每一列中的最小元素。将每一列中的元素映射到一个整数流,并找到该流中的最小值。
-
步骤5 - 将结果作为输出打印出来。
语法
在Java中,Matrix.length() 方法返回给定矩阵的大小。
以下是该方法的语法 −
inputMatrix.lenght
其中,’inputMatrix’ 指的是给定的矩阵。
Arrays.stream(matrix) 将二维整数数组 matrix 转换为数组流,其中流中的每个数组代表矩阵中的一行。
Arrays.stream(matrix)
.mapToInt(row - > row[column])
将流中的每个数组(行)映射为对应于指定列索引处元素的整数值。
.mapToInt(row -> row[column])
.max() 返回流中的最大元素。
.max()
.min() 返回流中的最小元素。
.min()
多种方法
我们以不同的方法提供了解决方案。
- 通过使用嵌套的for循环
-
通过使用Stream API
让我们逐个查看程序及其输出。
方法1:通过使用嵌套的for循环
在这种方法中,程序将初始化矩阵元素。然后根据算法,通过使用嵌套的for循环找到该矩阵每一列中最大和最小的元素。
示例
public class Main {
public static void main(String[] args) {
int[][] inputMatrix = {
{101, 15, 121},
{210, 115, 71},
{81, 215, 118}
};
int r = inputMatrix.length;
int c = inputMatrix[0].length;
//loop to find the largest element in each column
for (int x = 0; x < c; x++) {
int maxm = inputMatrix[0][x];
for (int y = 1; y < r; y++) {
if (inputMatrix[y][x] > maxm) {
maxm = inputMatrix[y][x];
}
}
System.out.println("The largest element in column " + (x+1) + " is " + maxm);
}
//loop to find the smallest elements in each column
for (int x = 0; x < c; x++) {
int mimm = inputMatrix[0][x];
for (int y = 1; y < r; y++) {
if (inputMatrix[y][x] < mimm) {
mimm = inputMatrix[y][x];
}
}
System.out.println("The smallest element in column " + (x+1) + " is " + mimm);
}
}
}
输出
The largest element in column 1 is 210
The largest element in column 2 is 215
The largest element in column 3 is 121
The smallest element in column 1 is 81
The smallest element in column 2 is 15
The smallest element in column 3 is 71
方法2:通过动态初始化矩阵
在这个方法中,矩阵元素将在程序中进行初始化。然后根据算法,使用Java流来找到该矩阵每列的最大和最小元素。
示例
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Define the matrix
int[][] matrix = {
{1, 5, 3},
{2, 7, 4},
{9, 6, 8}
};
// Get the number of columns
int numCols = matrix[0].length;
// Iterate over each column
for (int i = 0; i < numCols; i++) {
// Create a final variable to hold the current column number
final int column = i;
// Use Java streams to find the largest element in the column
int max = Arrays.stream(matrix)
.mapToInt(row -> row[column])
.max()
.getAsInt();
// Use Java streams to find the smallest element in the column
int min = Arrays.stream(matrix)
.mapToInt(row -> row[column])
.min()
.getAsInt();
// Output the results to the console
System.out.println("---------------");
System.out.println("Column " + (i + 1) + ":");
System.out.println("---------------");
System.out.println("Largest element: " + max);
System.out.println("Smallest element: " + min);
}
}
}
输出
---------------
Column 1:
---------------
Largest element: 9
Smallest element: 1
---------------
Column 2:
---------------
Largest element: 7
Smallest element: 5
---------------
Column 3:
---------------
Largest element: 8
Smallest element: 3
在本文中,我们使用Java编程语言探讨了在矩阵的每一列中寻找最大和最小元素的不同方法。