某公司要针对员工情况统一调薪,现有一个员工列表,包含姓名、职级、工作年限、工资信息。现要求将该列表按以下规则重新排序:
1、职级高的排在前面
2、若职级相同,按工资少的排前面
3、若工资相同,工作年限长的排前面
输入描述:
第一行输入一个整数n,表示员工列表中员工的人数
接下来的n行,分别输入员工的姓名、职级、工作年限和工资信息,各项信息用空格分隔
输出描述:
输出按要求重新排列的员工列表,每名员工信息(姓名、职级、工作年限和工资)占一行
import java.util.*;
class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[][] list = new String[n][4];
for(int i=0;i<n;i++){
for(int j=0;j<4;j++){
list[i][j] = in.next();
}
}
Arrays.sort(list,new Comparator<String[]>(){
@Override
public int compare(String[] e1,String[] e2){
if (Integer.parseInt(e1[1])==Integer.parseInt(e2[1])){
if(Double.parseDouble(e1[3])==Double.parseDouble(e2[3])){
return Integer.parseInt(e2[2]) - Integer.parseInt(e1[2]);
}
return (Double.parseDouble(e1[3])-Double.parseDouble((e2[3]))) > 0d ? 1 : -1;
}
return Integer.parseInt(e2[1]) - Integer.parseInt(e1[1]);
}
});
for(int i=0;i<n;i++){
for(int j=0;j<3;j++){
System.out.printf(list[i][j] + " ");
}
System.out.printf("%.2f%n", Double.parseDouble(list[i][3]));
}
}
}