HashMap通过键值对,对文件内容进行排序

    技术2026-01-26  10

    文章目录

    思路操作步骤:**先看一下最初的文件**Code**结果:** ????.newLine();

    目的是将文件按照 “ . ” 前面的数字对段落进行排序

    思路

    数据结构选HashMap 用java IO自带的字符缓冲流

    操作步骤:

    1.先创建BufferedReader和BufferedWriter对象 2.用readLine()方法获取一个字符串,规则是\n或\r或\n\r为止 3.分割字符串为 "."前数字一部分 "."后内容一部分 4.存入HashMap, 5.遍历HashMap中的键,用此找到value 6.合并,写入目标文件

    先看一下最初的文件

    Code

    package TestFile; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; public class sortx { public static void main(String[] args) throws IOException { //抛io异常 HashMap<String,String> m = new HashMap<>(); BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\30978\\Desktop\\1.txt"),1024); //参数传递字符输入流和大小 BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\30978\\Desktop\\2.txt"),1024); //参数传递字符输出流和大小 String str; while((str = br.readLine())!=null) { String[] strs = str.split("\\."); //用.分开 m.put(strs[0], strs[1]); } for(String a:m.keySet()) { //遍历key找到value String value = m.get(a); str = a+"."+value; //合并存入 bw.write(str); bw.newLine(); //这个是换行 } //释放资源 bw.close(); br.close(); } }

    结果:

    ????


    问题来了,我们没有进行sort一类的操作,怎么就有序了呢?

    查一下JDK发现 HashMap的底层是一种似“桶”的结构 所有就会自动“排序”,想了解桶是什么可以百度一下桶排序。

    .newLine();


    换行是怎么回事呢 可以找一下…println();的源码

    Processed: 0.015, SQL: 9