题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
学生和分数拼接后存list集合,sort排序时分割字符串取出分数进行排序
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int n =Integer.parseInt(sc.nextLine()); int flag =Integer.parseInt(sc.nextLine()); Map<String,Integer> map = new LinkedHashMap<>(n); List<String> list = new ArrayList<>(); for(int i=0;i<n;i++){ String s = sc.nextLine(); String[] arr = s.split(" "); list.add(arr[0]+'='+arr[1]);//用list排序 //map.put(arr[0]+'='+Integer.parseInt(arr[1]),Integer.parseInt(arr[1])); } //排序 list = getOrderBy(list,flag); for(int i=0;i<list.size();i++){ String[] arr = list.get(i).split("="); System.out.println(arr[0]+" "+arr[1]); } } public static List<String> getOrderBy(List<String> list,int flag){ if(flag == 1){ Collections.sort(list,(s1,s2)->{ String[] arr1 = s1.split("="); String[] arr2 = s2.split("="); int n1 =Integer.parseInt(arr1[1]); int n2 = Integer.parseInt(arr2[1]); if(n1 == n2){ return 0; } if(n1 > n2){ return 1; } if(n1 < n2){ return -1; } return n1 - n2; }); }else{ Collections.sort(list,(s1,s2)->{ String[] arr1 = s1.split("="); String[] arr2 = s2.split("="); int n1 =Integer.parseInt(arr1[1]); int n2 = Integer.parseInt(arr2[1]); if(n1 == n2){ return 0; } if(n1 > n2){ return -1; } if(n1 < n2){ return 1; } return n2 - n1; }); } return list; } }