安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; public class Main { // /** // * @param args // */ // public static void main(String[] args) { // Scanner sc = new Scanner(System.in); // int n = sc.nextInt(); // String []s = new String[n]; // for (int i = 0; i < s.length; i++) { // s[i]=sc.next(); // } // int []x=new int[n]; // for (int i = 0; i < x.length; i++) { // String str = s[i].substring(6,14); // x[i]=Integer.valueOf(str).intValue(); // // } // int num = 0; // String sr=""; // for (int i = 0; i < x.length-1; i++) { // for (int j = 0; j < x.length-i-1; j++) { // if (x[j]>x[j+1]) { // num = x[j]; // x[j]=x[j+1]; // x[j+1]=num; // sr=s[j]; // s[j]=s[j+1]; // s[j+1]=sr; // } // } // } // for (int i = s.length-1; i >=0; i--) { // System.out.println(s[i]); // } // // } static Comparator<String> com=new Comparator<String>() { public int compare(String o1,String o2){ String s1=o1.substring(6, 14); String s2=o2.substring(6, 14); if(!s1.equals(s2)){ return s2.compareTo(s1); } else return o2.compareTo(o1); } }; public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); ArrayList<String> str=new ArrayList<String>(); for(int i=0;i<n;i++){ String s=in.next(); str.add(s); } Collections.sort(str,com); for (int i = 0; i <str.size(); i++) { System.out.println(str.get(i)); } } }
原文:https://www.cnblogs.com/shiaguang/p/12343047.html