如何在不使用for循环的情况下在数组列表中找到第二高的数字?
答案 0 :(得分:1)
先排序 然后,在ArrayList中获取第二个
例如:
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1000);
arrayList.add(10220);
arrayList.add(990);
Collections.sort(arrayList);
System.out.println(arrayList.get(arrayList.size() - 2));
答案 1 :(得分:0)
Integer max2( List<Integer> list ){
if(list.size() < 2) throw...
Integer[] max = new Integer[]{ list.get(0), list.get(1) };
if( max[0] < max[1] ){ max[0] = max[1]; max[1] = list.get(0); }
return maxdo( list, 2, max );
}
Integer maxdo( List<Integer> list, int pos, Integer[] max ){
if( pos >= list.size() ) return max[1];
Integer next = list.get(pos);
if( next > max[0] ){ max[1] = max[0]; max[0] = next; }
else if( next > max[1] ){ max[1] = next; }
return maxdo( list, pos+1, max );
}
未经测试,未尝试使用javac,但我认为您会明白这一点。