69 身份证排序
作者: Turbo时间限制: 1S章节: 基本练习(字符串)
问题描述 :
安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
输入说明 :
第一行一个整数n,表示有n个身份证号码
余下的n行,每行一个身份证号码。
n<=100000
输出说明 :
按出生日期从大到小排序后的身份证号,每行一条
输入范例 :
5
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
输出范例 :
404475727700034980
234804580401078365
215856472207097978
710351408803093165
466272307503271156
import java.util.*;
public class test_69 {
/**
* 69 身份证排序
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
ArrayList<String> list = new ArrayList<>(n);
while (sc.hasNext()){
list.add(sc.next().trim());
}
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.substring(6,14).compareTo(o1.substring(6,14))==0?o2.compareTo(o1):o2.substring(6,14).compareTo(o1.substring(6,14));
}
});
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}