首页 > 解决方案 > 打印数组中最大的 2 个数字

问题描述

所以我创建了一个名为 max2 的方法,它应该返回数组中的 2 个最大值。我能够返回最高值,但是我无法弄清楚如何返回第二高的值。

这是我的代码:主要方法

    public static void main(String[] args) {
        Integer intArray[] = { 13, 25, 46, 65, 12, 23};
        Double doubleArray[] = {1.2, 3.4, 1.1, 0.1, 5.6};
        String stringArray[] = {"H", "E", "L", "L", "O"};

    System.out.println("The smallest number is: " + myMin(doubleArray));
    System.out.println("The median is: " + median(doubleArray));
    System.out.println("The median is: " + median(stringArray));
    System.out.println("The max is: " + max2(intArray));
}

我的 max2 方法:

public static <E extends Comparable<E>> E max2(E... elements) {

Arrays.sort(elements);

    E max = elements[0];
    for (E element : elements) {
        if (element.compareTo(max) > 0) {
            max = element;

        }
    }
    return max;

}

我想知道是否有办法获得数组的倒数第二个索引。理想情况下,我希望它适用于任何阵列。我希望被指出正确的方向。谢谢您的帮助。

标签: javaarrays

解决方案


您可以使用 Java 8 流来删除重复项并对数组进行排序,并使用length-1andlength-2从数组中获取最大和第二个最大元素

Integer intArray[] = { 13,13, 25, 46,25, 65, 12, 23};
    Double doubleArray[] = {1.2, 3.4, 1.1, 0.1, 5.6};
    String stringArray[] = {"H", "E", "L", "L", "O"};

   Integer[] s= Arrays.stream(intArray).sorted().distinct().toArray(Integer[]::new);
   System.out.println(Arrays.toString(s));
   int max = s[s.length-1];
   int max2 = s[s.length-2];

或者如果您只想对数组进行排序,那么您应该使用Arrays.sort对数组进行排序并获取最大和第二个最大元素

Arrays.sort(intArray) 
int max = s[s.length-1];
int max2 = s[s.length-2];

推荐阅读