通话录-对本地姓名文件通过首字母、拼音、名字、繁体字查询系统

package org.example;

import com.hankcs.hanlp.HanLP;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Scanner;

public class Dome04_text {
    public static void main(String[] args) throws IOException {
        LinkedList<Map<String, String>> contacts = new LinkedList<>();
        //1.读取文件
        BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Data\\d.txt"));
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            HashMap<String, String> contact = new HashMap<>();
            contact.put("name", line);
            String pingyin = HanLP.convertToPinyinString(line, " ", false);
            contact.put("pinyin", pingyin);
            contact.put("firstLetter", pingyin.substring(0, 1));
            contact.put("firstLetters", HanLP.convertToPinyinFirstCharString(line, " ", false));
            contacts.add(contact);

        }
        contacts.sort(((o1, o2) -> o1.get("firstLetters").compareTo(o2.get("firstLetters"))));
        //搜索
        while (true) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("-----------菜单-----------");
            System.out.println("1.根据字母搜索");
            System.out.println("2.根据拼音搜索");
            System.out.println("3.根据名字搜索");
            System.out.println("4.根据繁体字搜索");
            System.out.println("0.退出");
            System.out.print("请输入菜单:");
            switch (scanner.next()) {
//                根据字母搜索
                case "1":
                    System.out.print("请输入字母:");
                    String firstLetter = scanner.next();
                    LinkedList<Map<String, String>> search1 = new LinkedList<>();
                    contacts.forEach(contact -> {
                        if (firstLetter.equalsIgnoreCase(contact.get("firstLetter"))) {
                            search1.add(contact);
                        }
                    });
                    System.out.println(search1);
                    break;
//                根据拼音搜索
                case "2":
                    System.out.println("请输入拼音:");
                    String letter = scanner.next();
                    LinkedList<Map<String, String>> search2 = new LinkedList<>();
                    for (char c : letter.toCharArray()) {
                        for (Map<String, String> contact : contacts) {
                            if (contact.get("pinyin").contains(String.valueOf(c))) {
                                search2.add(contact);
                                break;
                            }
                        }
                    }
                    System.out.println(search2);
                    break;
//                根据名字搜索
                case "3":
                    System.out.println("请输入名字:");
                    String names = scanner.next();
                    LinkedList<Map<String, String>> search3 = new LinkedList<>();
                    for (char c : names.toCharArray()) {
                        for (Map<String, String> contact : contacts) {
                            System.out.println(contact);
                            if (contact.get("name").contains(String.valueOf(c))) {
                                search3.add(contact);
                            }
                        }
                    }
//                    System.out.println(search3);
                    break;
//                根据繁体字搜索
                case "4":
                    System.out.println("请输入繁体名字:");
                    String antiName = scanner.next();
                    String s = HanLP.convertToSimplifiedChinese(antiName);
                    LinkedList<Map<String, String>> search4 = new LinkedList<>();
                    for (char c : s.toCharArray()) {
                        for (Map<String, String> contact : contacts) {
                            if (contact.get("name").contains(String.valueOf(c))) {
                                search4.add(contact);
                            }
                        }
                    }
                    System.out.println(search4);
                    break;
                case "0":
                    System.exit(0);
            }
        }
    }
}

运行结果

 

猜你喜欢

转载自blog.csdn.net/qq_62249633/article/details/130243097
今日推荐