java - 在java中对相关文本文件进行排序创建公共(public)索引

标签 java sorting object

大家好 我想对 2 个相关文件进行排序,创建一个可以对它们进行排序的唯一索引

我有一个格式如下示例的 .txt 文件:

File1

Houston
Chicago
Seattle
Cleveland

另一个文件的格式如下:

File2

44
33
55
22

我想要以下输出:

Seattle 55
Houston 44
Chicago 33
Cleveland 22

我已经从 .txt 文件创建了 2 个对象数组,因此由于“< 或 >”运算符,我无法使用冒泡排序。我使用 .sort 函数对分数进行排序,但通过这种方式,我不会创建索引来对团队进行排序。我该如何解决这个问题?

这是我的代码

 private void visualizzaClassificaButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                           
    // TODO add your handling code here:
    List<String> teams = new ArrayList<String>();
    List<Float> scores = new ArrayList<Float>();

    try {
        FileInputStream fstream = new FileInputStream("C:/Users/Fra....../file1");
        FileInputStream fstream2 = new FileInputStream("C:/Users/Fra...../file2");
        DataInputStream in = new DataInputStream(fstream);
        DataInputStream in2 = new DataInputStream(fstream2);
        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
        String team = null;
        String score = null;

        while ((score = br.readLine()) != null && (team = br2.readLine()) !=null)   {
            teams.add(team);
            scores.add(Float.parseFloat(score));
        }

        Object[] squadreTutte = teams.toArray();
        Object[] punteggiTutti = scores.toArray();
        Arrays.sort(punteggiTutti, Collections.reverseOrder());
        //????????????????????????????????
        for(int index=0; index<punteggiTutti.length; index++){
            System.out.println(punteggiTutti[index]);
            System.out.println(squadreTutte[index]);
        }
        in.close();
    } catch (Exception e) {
    }

}

请帮忙

最佳答案

当有人想要对并行数组进行排序时,几乎总是出现 object denial 的情况。 .

您应该做的是创建一个对象来保存名称、分数对:

public class Team implements Comparable<Team> {
  private final String name;
  private final int score;

  public Team(final String name, final int score) {
    this.name=name;
    this.score=score;
  }

  // add getters

  public int compareTo(Team other) {
    if (this.score != other.score) {
      return Integer.valueOf(this.score).compareTo(other.score);
    } else {
      return this.name.compareTo(other.name);
    }
  }
}

然后,在读取文件时,为文件中的每一行创建一个 Team 对象,将它们放入 Collection 中并对其进行排序。您需要实现 Comparable在您的类(class)中(正如我上面所做的那样)或提供 Comparator对它们进行排序。

关于java - 在java中对相关文本文件进行排序创建公共(public)索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5296807/

相关文章:

Python:类方法返回名

javascript - JS : convert array objects to dot string

Java嵌套循环逻辑错误

java - 合并排序/合并方法的实现

java - 首先在 Object.property1 上对 Map<String, Object> 进行排序,然后对于每个 Object.property1,按 Object.property2 排序

java - 使用 JSTL,如何读取 set 的元素,以便它们按 "date"(java.util.Date) 属性排序?

javascript - Postman 测试检查部分对象值

用于 Oracle 访问的 Java 代码在执行期间失败。我该如何修复我的代码?

java - 在 Java Webstart 中更改工作目录

java - 非顺序地构建一个字符串?