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();的源码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值