7-5 jmu-Java-02基本语法-03-身份证排序 --笔记篇 简洁清晰

题目

输入n,然后连续输入n个身份证号。

然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。

输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。

输入sort2,将所有身份证按照里面的年月日升序输出。

注意:处理输入的时候,全部使用Scanner的nextLine()方法,以免出错。

c 复制代码
输入样例:
6
410425198309308225
320203197206115011
431227196108033146
330226196605054190
34080019810819327X
320111197112301539
sort1
sort2
e

输出样例:
1961-08-03
1966-05-05
1971-12-30
1972-06-11
1981-08-19
1983-09-30
431227196108033146
330226196605054190
320111197112301539
320203197206115011
34080019810819327X
410425198309308225
exit

代码

java 复制代码
import java.util.*;
class cp implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {
        return o1.substring(6,14).compareTo(o2.substring(6,14));
    }
}

public class Main {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        in.nextLine();
        ArrayList<String> p=new ArrayList<>();
        ArrayList<String> p1=new ArrayList<>();
        while (n>0){
            String l=in.nextLine();
            p.add(l);
            n--;
        }
        while (in.hasNext()){
            String ll=in.nextLine();
            if (ll.equals("sort1"))
            {
                for(String lll:p)
                    p1.add(lll.substring(6,10)+'-'+lll.substring(10,12)+'-'+lll.substring(12,14));
                Collections.sort(p1);
                for (String i:p1)
                    System.out.println(i);
            }
            else if (ll.equals("sort2")){
                p.sort(new cp());
                for (String i:p)
                    System.out.println(i);
            }
            else {
                System.out.println("exit");
                break;
            }
        }
    }
}

笔记

这段代码主要实现了两个排序功能,一个是按照字符串的子串进行排序,另一个是按照字符串的特定位置进行排序。

这段代码主要涉及到了以下知识点:

1.字符串的子串操作:substring方法用于获取字符串的子串。

2.集合的排序和反转:Collections.sort和Collections.reverse方法用于对集合进行排序和反转。

3.自定义比较器:定义了一个实现了Comparator接口的类cp,并重写了compare方法,用于自定义比较规则。

相关推荐
OBiO20132 小时前
Cell | 突破AAV载体容量限制!路中华/姜玉武/刘太安团队开发AAVLINK系统实现大基因递送
笔记
Yzzz-F2 小时前
Problem - 2205D - Codeforces
算法
极客先躯2 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188962 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java
我命由我123452 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime
aXin_ya2 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
智者知已应修善业2 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn2 小时前
Java Set集合相关知识点
java·开发语言·算法
Linsk2 小时前
Java和JavaScript的关系真是雷峰和雷峰塔的关系吗?
java·javascript·oracle
许彰午3 小时前
我手写了一个 Java 内存数据库(二):B+ 树的插入与分裂
java·开发语言·面试