java - 打印数组中最大的 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;
}
我想知道是否有办法获得数组的倒数第二个索引。理想情况下,我希望它适用于任何阵列。我希望被指出正确的方向。谢谢您的帮助。
解决方案
您可以使用 Java 8 流来删除重复项并对数组进行排序,并使用length-1
andlength-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];
推荐阅读
- typescript - 发出值后 RxJS BehaviorSubject getValue 不一致(在 Jest 中测试时)
- c# - MVC 不接受带逗号(,) 的小数,但默认情况下用逗号显示它们
- audit.net - DbContextHelper.SaveChanges() 方法在执行 baseSaveChanges() 后是否异步执行 SaveScope()?
- user-interface - 在 ANGULAR 6 的下拉菜单中添加字段?
- .net-core - 在运行时连接到数据库中的表,然后提取数据?
- php - 向数组添加一个额外的值
- javascript - 单击链接后下拉菜单向后滑动
- c# - 摆脱 if 情况
- mysql - 如何在单个表上应用两列连接
- java - 主机应用程序看不到我的 sdk 的 javadoc