我当前正在尝试编写一个程序,该程序读取文件,将行添加到列表中,然后根据特定参数(最短的优先,最长的优先,字母顺序等)对行进行排序,然后将此排序后的版本写入另一个文件。参数和文件由命令行参数指定。
我设法在不添加特定排序类型的选择的情况下使它起作用,但是一旦我添加了选择选项,它便不再使用排序方法。
这是有效的代码:
BufferedReader inputStream = null;
PrintWriter outputStream = null;
String inFile = args[0];
String outFile = args[1];
List<String> lines = new LinkedList<>();
try {
inputStream =
new BufferedReader(new FileReader(inFile));
outputStream=
new PrintWriter(new FileWriter(outFile));
String line;
while ((line = inputStream.readLine()) != null) {
lines.add(line);
Collections.sort(lines, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
});
}
for (int i = 0; i < lines.size() - 1; i++) {
outputStream.println(lines.get(i));
}
这是无效的代码:
BufferedReader inputStream = null;
PrintWriter outputStream = null;
String inFile = args[0];
String outFile = args[1];
List<String> lines = new LinkedList<>();
try {
inputStream =
new BufferedReader(new FileReader(inFile));
outputStream=
new PrintWriter(new FileWriter(outFile));
String line;
while ((line = inputStream.readLine()) != null) {
lines.add(line);
if(args[2] == "LONGESTFIRST") {
Collections.sort(lines, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.length() - o1.length();
}
});
}
}
for (int i = 0; i < lines.size(); i++) {
outputStream.println(lines.get(i));
}
这些缩进是很奇怪的,但是我保证这不是问题。只是格式化问题。
第一个代码块以最长的正确顺序对行进行排序,然后将其写入文件,但是第二个代码块只是将文本原样粘贴到另一个文件中,而没有对其进行排序。因此看来问题实际上已经到了对其进行排序的行了,但是我不确定。
在此先感谢您的帮助!
此问题被标记为“如何比较Java中的字符串”的重复项,并且该线程肯定没有我当前问题的答案。