Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中排序多个ArrayList_Java_Sorting_Arraylist_Methods - Fatal编程技术网

在Java中排序多个ArrayList

在Java中排序多个ArrayList,java,sorting,arraylist,methods,Java,Sorting,Arraylist,Methods,我试图找出如何对从.txt文件中产生的ArrayList进行排序。我希望能够按名称的字母顺序对它们进行排序。下面是如何列出txt文件的示例: Alvarez, Eliezer 74 2B IA 22 Bowman, Matt 67 P A 26 每件作品都单独在一行上(除了姓氏,姓氏一起在一行上) 是否有一种方法可以执行集合排序,从而根据名称Arraylist调整其余Arraylist?谢谢 Scanner keyboard = new Scanner(System.in);

我试图找出如何对从.txt文件中产生的ArrayList进行排序。我希望能够按名称的字母顺序对它们进行排序。下面是如何列出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) {
扫描仪键盘=新扫描仪(System.in);
字符串文件名;
fileName=“cardinals.txt”;
文件=新文件(文件名);
如果(!basketball.exists()){
System.out.println(“未找到输入文件”);
系统出口(0);
}
ArrayList name=新的ArrayList();
ArrayList编号=新的ArrayList();
ArrayList位置=新的ArrayList();
ArrayList状态=新建ArrayList();
ArrayList年龄=新建ArrayList();
扫描仪状态=新扫描仪(棒球);
如果(!stats.hasNext()){
System.out.println(“文件为空”);
}
否则{
while(stats.hasNext()){
name.add(stats.nextLine());
add(stats.nextInt());
position.add(stats.next());
status.add(stats.next());
age.add(stats.nextDouble());
试一试{
stats.nextLine();
}捕获(例外e){
}
}
}stats.close();
Sortarray位置();
SortaryList(ArrayList名称、ArrayList编号、ArrayList位置、ArrayList状态、ArrayList年龄){

组织和管理复杂数据时,使用对象将数据分组是最好的方法

以下是使用对象存储信息的示例:

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);
    }
}
包示例;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.Comparator;
导入java.util.List;
导入java.util.Scanner;
类统计读取器{
私有静态类PlayerStats{
字符串名;
整数;
串位置;
字符串状态;
双倍年龄;
公共播放状态(字符串名称、整数、字符串位置、字符串状态、双年龄){
this.name=名称;
这个数字=数字;
这个位置=位置;
这个状态=状态;
这个。年龄=年龄;
}
@凌驾
公共字符串toString(){
返回“PlayerStats{”+
“name=”+name+“\”+
“,number=“+number+
“,位置=”“+位置+”\“””+
,状态=“+”状态+“\”+
“,age=“+age+
'}';
}
}
公共静态void main(字符串[]args){
File barball=新文件(“cardinals.txt”);
如果(!basketball.exists()){
System.out.println(“未找到输入文件”);
系统出口(0);
}
List statsList=new ArrayList();
尝试(扫描器统计=新扫描器(棒球)){
如果(!stats.hasNext()){
System.out.println(“文件为空”);
}
否则{
while(stats.hasNext()){
字符串名称=stats.nextLine();
整数=stats.nextInt();
字符串位置=stats.next();
字符串状态=stats.next();
双倍年龄=stats.nextDouble();
添加(新玩家状态(姓名、号码、职位、状态、年龄));
stats.nextLine();
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}
statsList.sort(Comparator.comparing(o->o.name));
statsList.forEach(System.out::println);
}
}

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

为什么不创建一个对象,然后将数据粘贴到对象中?然后您只需要一个对象列表,并且可以根据名称字段进行排序。