java - 如何从第 n 个字符开始对文件中的行进行排序?
问题描述
我有一个文件如下:1个菠萝\n 2个苹果\n
我想从每行的第 n 个字符开始对其进行排序,其中 n 将给出。
例如,如果 n=2,则文件应排序为 2 apple \n 1 pineapple \n 因为 'a' 在 'p' 之前
如果 n = 4 那么排序文件应该是 1 pineapple \n 2 apple \n 因为 'i' 在 'p' 之前
我怎样才能做到这一点?
在第一个(第 0 个)字符处排序效果很好。我正在关注这个链接:https ://javaconceptoftheday.com/how-to-sort-a-text-file-in-java/
实现代码如下:
String inputFile = 'test.txt';
String outputFile = 'output.txt';
FileReader fileReader = new FileReader(inputFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String inputLine;
List<String> lineList = new ArrayList<String>();
while ((inputLine = bufferedReader.readLine()) != null) {
lineList.add(inputLine);
}
fileReader.close();
Collections.sort(lineList);
FileWriter fileWriter = new FileWriter(outputFile);
PrintWriter out = new PrintWriter(fileWriter);
for (String outputLine : lineList) {
out.println(outputLine);
}
out.flush();
out.close();
fileWriter.close();
上面的代码可以正常工作,但是没有实现从每行第 n 个字符开始的排序。
解决方案
您可以使用自定义比较器,该比较器采用每行的子字符串:
Files.lines(Paths.get(inputFile))
.sorted(Comparator.comparing(s -> s.substring(n))
.forEach(System.out::println);
推荐阅读
- python-3.x - 添加时间到日期时间
- kubernetes - Kubernetes 中的“替换”是否等同于“更新”?
- amazon-ec2 - 使用 bash 从实例内部获取 AWS EC2 实例名称标签
- php - 如何在 PHP 中搜索 Json 结构?
- vba - 数组中的子集和
- excel - Excel数据透视表未以正确格式显示单元格的值
- xamarin.android - Xamarin.Android java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/R$string
- django - django-crontab 一天后缺少哈希
- python - 替换打印语句中的单个字符
- sql - SQL Server 存储过程使用各种字段以及日期范围进行搜索