【问题标题】:Sorting multiple arraylists in Java在 Java 中对多个数组列表进行排序
【发布时间】:2017-12-13 14:15:36
【问题描述】:

我试图弄清楚如何对来自 .txt 文件的数组列表进行排序。我希望能够按名称按字母顺序对它们进行排序。以下是如何列出 txt 文件的示例:

Alvarez, Eliezer
74
2B
IA
22
Bowman, Matt
67
P
A
26

每个部分都单独在一行上(除了姓氏,名字在一行上)。

有没有办法进行集合排序,根据名称 Arraylist 调整其余的 Arraylist?谢谢。

    Scanner keyboard = new Scanner(System.in);
    String filename;
    fileName = "cardinals.txt";

    File baseball = new File(fileName);
        if (!baseball.exists()) {
            System.out.println("The input file was not found.");
            System.exit(0);
        }

    ArrayList<String> name = new ArrayList<>();
    ArrayList<Integer> number = new ArrayList<>();
    ArrayList<String> position = new ArrayList<>();
    ArrayList<String> status = new ArrayList<>();
    ArrayList<Double> age = new ArrayList<>();

    Scanner stats = new Scanner(baseball);

    if (!stats.hasNext()) {
        System.out.println("The file is empty.");
    }
    else {
        while (stats.hasNext()) {
            name.add(stats.nextLine());
            number.add(stats.nextInt());
            position.add(stats.next());
            status.add(stats.next());
            age.add(stats.nextDouble());
            try {
                stats.nextLine();
            } catch (Exception e) {
            }
        }
    } stats.close();
    sortArrayPosition();

    sortArrayPosition (ArrayList<String> name, ArrayList<Integer> number, ArrayList<String> position, ArrayList<String> status, ArrayList<Double> age) {

【问题讨论】:

  • 为什么不做一个对象,然后把数据粘在对象里呢?那么你只需要1个对象列表,你可以根据名称字段进行排序。

标签: java sorting arraylist methods


【解决方案1】:

在组织和管理复杂数据时,使用对象将数据组合在一起是最好的方法。

这是一个使用对象存储信息的示例:

package example;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

class StatisticsReader {
    private static class PlayerStats {
        String name;
        Integer number;
        String position;
        String status;
        Double age;

        public PlayerStats(String name, Integer number, String position, String status, Double age) {
            this.name = name;
            this.number = number;
            this.position = position;
            this.status = status;
            this.age = age;
        }

        @Override
        public String toString() {
            return "PlayerStats{" +
                    "name='" + name + '\'' +
                    ", number=" + number +
                    ", position='" + position + '\'' +
                    ", status='" + status + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    public static void main(String[] args) {
        File baseball = new File("cardinals.txt");
        if (!baseball.exists()) {
            System.out.println("The input file was not found.");
            System.exit(0);
        }
        List<PlayerStats> statsList = new ArrayList<>();
        try (Scanner stats = new Scanner(baseball)) {
            if (!stats.hasNext()) {
                System.out.println("The file is empty.");
            }
            else {
                while (stats.hasNext()) {
                    String name = stats.nextLine();
                    Integer number = stats.nextInt();
                    String position = stats.next();
                    String status = stats.next();
                    Double age = stats.nextDouble();
                    statsList.add(new PlayerStats(name, number, position, status, age));
                    stats.nextLine();
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        statsList.sort(Comparator.comparing(o -> o.name));
        statsList.forEach(System.out::println);
    }
}

如有必要,您可以自定义 toString() 方法来更改输出。

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2012-08-23
    • 2016-07-02
    • 1970-01-01
    • 2022-01-24
    • 2012-04-22
    相关资源
    最近更新 更多