Java,从txt文件中排序和显示数据

时间:2017-01-23 12:24:38

标签: java file sorting

我是java的新手,并且在完成一项任务时遇到了一些麻烦。 我有txt文件,看起来像这样:

John Doe,01-01-1980,Development,Senior Developer
Susan Smith,07-12-1983,Development,Head of Development
Ane Key,06-06-1989,BA,Junior Analyst
Nina Simone,21-09-1979,BA,Head of BA
Tom Popa,23-02-1982,Development,Developer
Tyrion Lannyster,17-03-1988,BA,Analyst

我希望按部门对其进行排序。 例如: 成员是:

[Employee Full Name] - [Employee Age] - [Employee Position] - [Employee Salary(default value x)]

部门:发展                 成员是:                                 苏珊史密斯......                                 约翰·多伊......                                 汤姆波帕......                 系:文学士                 成员是:                                 尼娜西蒙娜.......                                 Ane Key ...........                                 Tyrion Lannyster ........

首先读取文件并制作2d数组,但不能继续正确排序。

public static void main(String[] args) {

    String csvFile = "C:\\Employees.txt";
    BufferedReader br = null;
    String line = "";
    String SplitBy = ",";

    String myArray[][] = new String[6][5];
    int row = 0;

    try {
        br = new BufferedReader(new FileReader(csvFile));

        while ((line = br.readLine()) != null) {  

            String nums[] = line.split(SplitBy);

        for (int col = 0; col < nums.length; col++){

                String n =nums[col];

                myArray[row][col] = n;
           //     System.out.println(n);
            }               
            row++;



        }

              } 

    catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }



}

3 个答案:

答案 0 :(得分:0)

Java Collections API允许您排序以及util.Arrays。 您将需要代码的数组方法,但考虑转移到某种类型的Collection。也许是一个开始的列表。

答案 1 :(得分:0)

最简单的方法是将行内容放在Java Bean中,然后使用sort对它们进行排序。

{{1}}

然后将代码修改为:

{{1}}

答案 2 :(得分:0)

在这里提供代码解决方案无助于您学习它。但我可以给你提示如何继续。不建议使用数组。

简单但又脏的方式 -

使用TreeMap<String, String[]>而不是二维数组,其中key是与name连接的部门,value是个人详细信息的一维数组。当我们使用TreeMap时,结果会根据部门和人员名称自然排序。循环浏览entrySet并打印所有结果。

正确的方式 -

使用所有需要的成员定义新对象Person。实现Comparable接口。读取所有输入数据,在Person对象中填充相同内容,在ArrayList中添加每个此类对象,并使用Collections API的排序方法对所有对象进行排序。或者,您可以调整Comparator方式。