我正在尝试自己学习java。我知道对大多数人来说这可能是一个非常简单的问题,但我很困惑。所以我要说我有一个人的列表,比如说a,b,c,d在测试中得到4分,2分,3分和1分。 所以我有:
public static void main(String[] arguments) {
String[] names = { "a","b","c","d" };
int[] times = { 4,2,3,1};
如何编写代码以获得最高分和第二高分?
提前感谢加载。
答案 0 :(得分:2)
{
Arrays.sort(times);
System.out.println(times[times.length-1]);
System.out.println(times[times.length-2]);
}
答案 1 :(得分:1)
您可以使用一种非常简单的技术Bubble Sort来按降序对数组进行排序
类似的东西,
for(int i=0; i<array.length; i++) {
for(int j=0; j<array.length-1-i; j++) {
if(array[j].compareTo(array[j+1])>0) {
t= array[j];
array[j] = array[j+1];
array[j+1] = t;
}
}
}
<强>演示强>
修改强>
对于Lambda Expression
我建议您首先浏览this document,然后先尝试自己。如果您遇到任何问题,请在此告知我们。
答案 2 :(得分:0)
在数组上使用the Array.sort方法,然后使用索引。当它以这种方式排序时,它按升序排列。
Arrays.sort(times);
int highest = times[times.length-1]; // arrays start at index 0, so "-1"
int secondhighest = times[times.length-2];
答案 3 :(得分:0)
如何在Java 8
代码:
Integer[] numbers = {2,4,3,1,5,6,8,7};
List<Integer> N = Arrays.asList(numbers);
System.out.print("the list ");
N.forEach((i)->System.out.print(i + " "));
System.out.println();
Comparator<Integer> byThis = (i, j) -> Integer.compare(
i,j);
System.out.print("the ordered list ");
N.stream().sorted(byThis).forEach(i->System.out.print(i+" "));
System.out.println("");
String[] names = {"c", "b", "a", "d"};
for(String st: names) System.out.print(st + " " );
System.out.println();
List<String> S = Arrays.asList(names);
S.stream().sorted().forEach(s -> System.out.print(s + " "));
System.out.println("\n The Max Number is " + N.stream().max(byThis).get());
输出:
the list 2 4 3 1 5 6 8 7
the ordered list 1 2 3 4 5 6 7 8
the list c b a d
the ordered list a b c d
The Max Number is 8
来源:
http://www.leveluplunch.com/java/tutorials/007-sort-arraylist-stream-of-objects-in-java8/
http://www.dreamsyssoft.com/java-8-lambda-tutorial/comparator-tutorial.php