有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过Java以某种方式输出文件

有点小问题。我已经成功地输出了一个基于时间戳顺序的文件,但是,如果时间戳相同,我还试图将另一个条件添加到字母顺序中

例如:

[时间戳=12:30][EVENT=B]

[时间戳=12:30][EVENT=U]

[时间戳=12:30][EVENT=A]

我想让它输出

[时间戳=12:30][EVENT=A]

[时间戳=12:30][EVENT=B]

[时间戳=12:30][EVENT=U]

我目前的代码是:

package Organiser;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Organiser {

    public static void main(String[] args) throws FileNotFoundException {
        ArrayList<String> lines = new ArrayList<>();
        String directory = "C:\\Users\\xxx\\Desktop\\Files\\ex1";
        Scanner fileIn = new Scanner(new File(directory + ".txt"));
        PrintWriter out = new PrintWriter(directory + "_ordered.txt");

        while (fileIn.hasNextLine() == true) {
            lines.add(fileIn.nextLine());
            Collections.sort(lines);
            System.out.println("Reading...");
        }

        for (String output : lines) {
            out.println(output + "\n");
        }

        out.close();
        System.out.println("Complete - See " + directory + "_ordered.txt");
    }
}

有什么想法吗

编辑:这仅适用于样本数据,我只希望在时间戳相同时发生,否则,它将根据时间戳进行相应排序

示例文件:

https://www.dropbox.com/s/611psg6qw4nl9pw/ex1.txt?dl=0


共 (1) 个答案

  1. # 1 楼答案

    它应该在默认情况下发生。(自“U”起>;“B”起>;“A”)

    public static void main(String[] args) {
            ArrayList<String> lines = new ArrayList<>();
            lines.add("[TIMESTAMP = 12:30][EVENT=B]");
            lines.add("[TIMESTAMP = 12:30][EVENT=A]");
            lines.add("[TIMESTAMP = 12:30][EVENT=U]");
    
            // unsorted
            System.out.println(lines);
            // default sorting of Strings will sort A before U
            Collections.sort(lines);
            System.out.println(lines);
        }