我有一点问题。我正在创建一个小实用程序来订购大量数据,并且在如何处理它时遇到一些麻烦。我有文件读取,循环和输出。我可以看到子字符串值,但不知道如何根据子字符串值正确获取输出集。基本上希望根据子字符串以降序输出每一行。到目前为止,我的代码如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class fedOrganiser {
public static void main(String[] args) throws FileNotFoundException {
//File Path
Scanner fileIn = new Scanner(new File("C:\\Users\\xxx\\Desktop\\Files\\ex1.txt"));
PrintWriter out = new PrintWriter("C:\\Users\\xxx\\Desktop\\Files\\filename.txt");
while(fileIn.hasNextLine()==true) {//if no more lines to read, will return false
//int orderBy = nextLine();
System.out.println(fileIn.nextLine().substring(12,25));
out.println(fileIn.nextLine() + "\n");
}
System.out.println("Completed");
out.close();
}
}
任何想法或方向都会很棒:)
编辑:我没有循环,而是按照此处将整个文件读入内存:
String entireFileText = new Scanner(new File("C:\\Users\\xxx\\Desktop\\Files\\ex1.txt"))
.useDelimiter("\\A").next();
System.out.println(entireFileText);
但不确定如何按顺序排列?
每行的数据示例:
%[TIMESTAMP = 1] [EVENT = agentStateEvent1]
%[TIMESTAMP = 8] [EVENT = agentStateEvent8]
%[TIMESTAMP = 6] [EVENT = agentStateEvent6]
%[TIMESTAMP = 5] [EVENT = agentStateEvent5]
我想按照TIMESTAMP的顺序订购上述数据。
我希望输出。可以升序或降序。
%[TIMESTAMP = 1] [EVENT = agentStateEvent1]
%[TIMESTAMP = 5] [EVENT = agentStateEvent5]
%[TIMESTAMP = 6] [EVENT = agentStateEvent6]
%[TIMESTAMP = 8] [EVENT = agentStateEvent8]
答案 0 :(得分:3)
至于提供的示例行,您可以使用ArrayList
并对它们进行排序(正如Ankush Soni在评论中所建议的那样)
要做到这一点,
在循环之前创建ArrayList
ArrayList<String> lines = new ArrayList<>();
将while()循环更改为,
while(fileIn.hasNextLine()==true) {
lines.add(fileIn.nextLine());
}
之后使用ArrayList
Collections.sort()
进行排序
Collections.sort(lines);
然后使用
将其写入PrinWriter
for(String s : lines){
out.println(s + "\n");
}
答案 1 :(得分:2)
首先,将线条存储在有序地图中。
_comment.html.erb
循环浏览文件并存储行:
<%= comment.user.name %>
然后将排序的行按降序写入输出文件:
undefined method