java - 如何对文本文件中的并行数组进行排序

标签 java arrays sorting

所以我已经尝试了几乎所有的方法,但就是无法对其进行排序,我必须使用这种排序算法..

这是我到目前为止的代码,但是当我运行该程序时,它会按正常顺序而不是降序打印数组。

BufferedReader filein = new BufferedReader(new FileReader("Employees.txt"));

    int count = Integer.parseInt(filein.readLine());
    String[] names = new String[count];
    int[] years = new int[count];
    int i;
    int pass;
    int loc;
    int temp;
    String tempNames;
    String passNames;

    System.out.println("My Company Employee Search");
    System.out.println("--------------------------");
    System.out.println("");



    for(i=0; i < count-1; i++) {
        names[i] = filein.readLine();
        years[i] = Integer.parseInt(filein.readLine());
    }//populate the arrays from filein

    for(pass = 0; pass<count-1;pass++){
        loc = pass;
        for(i=pass+1; i<count; i++) {
            if(years[i]<years[loc]) {
                loc = i;
            }//end if
        }//end of inner loop



        temp = years[loc];
        years[loc] = years[pass];
        years[pass] = temp;

        names[loc]=names[pass];

        System.out.println(years[loc]+"  "+names[loc]);
    }//end of containg loop

我正在加载的文本文件是:

6
Luke
2013
Bob
1980
Ben
2000
Cam
2000
Holly
2001
Joe
1997

最佳答案

创建一个普通的旧 Java 对象(a POJO )并将文件内容存储在该 POJO 的实例中。只要你让你的POJO实现Comparable然后你可以使用 Arrays.sort(Object[])订购您需要多长的时间。

编辑

那么您需要更改第二个交换。

names[loc]=names[pass];

盲目替换names[loc]而不保存之前的值。

String tempName = names[loc];
names[loc] = names[pass];
names[pass] = tempName;

关于java - 如何对文本文件中的并行数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27181941/

相关文章:

java - 如何根据与字符串的相关性来组织 ListView ?

c - 使用指针传递结构数组并返回结构数组 - 函数

python - 保持先前未排序列表中的值之间的关联?

javascript - JQuery:将字段名称和值的集合组合成一个对象,然后插入一个数组

php - 使用来自 3 个平面数组的所有值组合形成分隔字符串数组

计算简单排序程序中的比较和交换

java - LSD基数排序为负整数,无队列

java - 在打字游戏中,我应该为 JTextField 使用什么监听器?

java - 如何更改Jasper报告打印名称

java - Hibernate:将 boolean 映射更改为 's'/'n'?