如何在不使用java中的for循环的情况下在Array List中找到第二高的数字?

时间:2014-02-06 12:35:43

标签: java for-loop

如何在不使用for循环的情况下在数组列表中找到第二高的数字?

2 个答案:

答案 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,但我认为您会明白这一点。