获取第二个数组中特定行或列中的最小元素

时间:2019-04-28 19:16:23

标签: java sorting multidimensional-array

我想知道如何在Java中获取第二个数组的特定行中的最小元素。

我已经尝试过arrays.sort,但是它没有按预期工作。

这就是我所拥有的:

static int largestinrow(int[][] arr, int row){
    int nums = arrays.sort(arr[row]);
    return nums;
}

3 个答案:

答案 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
  }
}