我想知道如何在Java中获取第二个数组的特定行中的最小元素。
我已经尝试过arrays.sort,但是它没有按预期工作。
这就是我所拥有的:
static int largestinrow(int[][] arr, int row){
int nums = arrays.sort(arr[row]);
return nums;
}
答案 0 :(得分:1)
您可以使用:
memcpy
示例:
static int smallestinrow(int[][] arr, int row) {
Arrays.sort(arr[row]); // sort the array with the specific index(row)
return arr[row][0]; // get the first value of the specific array
}
答案 1 :(得分:1)
您可以使用Arrays.stream()
和IntStream.min()
:
static int smallestinrow(int[][] arr, int row){
return Arrays.stream(arr[row])
.min()
.orElseThrow(IllegalArgumentException::new);
}
要获得整个2d数组中最小的数字,可以使用:
static int smallest(int[][] arr){
return Arrays.stream(arr)
.flatMapToInt(Arrays::stream)
.min()
.orElseThrow(IllegalArgumentException::new);
}
如果要为空数组返回默认值,则可以使用.orElse()
代替.orElseThrow()
而不是引发异常。
答案 2 :(得分:1)
您最初的问题是找到最小的数字。 如果您使用的是Java 7,并且希望对代码进行最少的更改,则可以使用它。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] a = new int[][]{{1, 0}, {1, 4}};
System.out.println(smallestinrow(a, 0)[0]);
}
static int[] smallestinrow(int[][] arr, int row) {
Arrays.sort(arr[row]);
return arr[0];//first element after ordering in ascending
}
}