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

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

思路

数据结构选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的底层是一种似“桶”的结构
所有就会自动“排序”,想了解桶是什么可以百度一下桶排序。

JDK

.newLine();


换行是怎么回事呢 可以找一下…println();的源码
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhimeng_LQ/article/details/107129842
今日推荐