public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
int countryCounts = scanner.nextInt();
scanner.nextLine();
List<String[]> medalList = new ArrayList<String[]>(countryCounts);
while (countryCounts-- > 0) {
String line = scanner.nextLine();
medalList.add(line.split(" "));
}
Collections.sort(medalList, new Comparator<String[]>() {
@Override
public int compare(String[] m1, String[] m2) {
int cs = 0;
for (int i = 1; i < m1.length; i++) {
cs = cpare(m1[i], m2[i]);
if (cs != 0) {
break;
}
}
if (cs == 0) {//金银铜牌都相同
return m2[0].compareTo(m1[0]);
}
return cs;
}
private int cpare(String m, String n) {
return Integer.valueOf(n) - Integer.valueOf(m);
}
});
for (String[] ml : medalList) {
System.out.println(ml[0]);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
scanner.close();
}
}
}没注释,将就着看吧
//创建控制台输入流
Scanner in = new Scanner(System.in);
//获取数量
int count = in.nextInt();
//保存数据的集合
List<String[]> data = new ArrayList<String[]>(count);
//轮询读取控制台输入的国家信息
while (in.hasNext()) {
String str = in.nextLine();
if (str.trim().length() != 0) {
data.add(str.split(" "));
}
//若输入了指定数量则停止
if (data.size() == count)
break;
}
//排序
Collections.sort(data, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
//先根据金牌排序
int d = Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]);
//金牌相等,则根据银牌排序
if(d == 0){
d = Integer.parseInt(o2[2]) - Integer.parseInt(o1[2]);
//银牌相等则根据铜牌排序
if(d == 0){
d = Integer.parseInt(o2[3]) - Integer.parseInt(o1[3]);
//铜牌相等则根据名字排序
if(d == 0){
Collator cmp = Collator.getInstance(java.util.Locale.US);
d = cmp.compare(o1[0], o2[0]);
}
}
}
return d;
}
});
for (String[] arr : data) {
System.out.println(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3]);
}
in.close();
}