按字典顺序获取第二大元素

时间:2013-04-15 22:49:05

标签: java

我试图按字典顺序或按字母顺序打印数组中的第二大元素。流行确实是第二大。然而;当我测试另一组数组时,我的代码没有按照我想象的方式设计,显然我只打印最后一个元素。关于我哪里出错的任何建议?

import java.util.ArrayList;
public class test {
public static void main(String[] args)
{
    ArrayList<String> list = new ArrayList<String>();
    list.add("bob");
    list.add("mill");
    list.add("sun");
    list.add("opera");
    list.add("bun");
    list.add("pop");
    System.out.println("list: " + list);
    String s = list.get(0);
    for ( int i = 0; i < list.size() - 1; i++) {
        if (list.get(i).compareTo(list.get(i + 1)) > 0) {
            s = list.get(i);
            list.set(i, list.get(i + 1));   
        } else if (list.get(i).compareTo(list.get(i + 1)) < 0) {
            s = list.get(i + 1);
        }
    }
    System.out.println("second largest: " + s);
}
}

1 个答案:

答案 0 :(得分:0)

我建议使用以下伪代码打印第二大元素:

element largest = ""
element secondlargest = ""
for each element in list:
   if element > largest:
      secondlargest = largest
      largest = element
   else if element > secondlargest:
      secondlargest = element
print secondlargest

(如果你希望扩展它以便能够打印第三,第四或第n个元素,更聪明的方法会更好 - 在极端情况下,你只需创建一个列表的排序副本并返回第n个项目从最后)