gpt4 book ai didi

java - 将数组列表格式化为特定格式

转载 作者:行者123 更新时间:2023-12-01 11:45:27 27 4
gpt4 key购买 nike

我正在编写的程序将对文本文件中的医院记录进行排序。文本文件的格式是姓氏,名字,年龄,房间号,它看起来就像这样:

Franklin,Benjamin,74,18
Hamilton,Alexander,25,6
Thatcher,Margaret,65,3
Nixon,Richard,45,7

并且必须以某种格式打印,但用户将指定它们的排序方式。按姓氏排序时,格式将如下所示:

Last     First     Age      Room
Coolidge Calvin 24 27
Franklin Benjamin 74 8
Hamilton Alexander 50 123
Nixon Richard 45 7

我一直在努力寻找一种方法来存储这些行,并且仍然能够将这些行一起打印出来,以便将信息保存在一起。该程序必须通过命令行调用,同时调用该程序,用户必须指定输入文件作为第一个参数(args[0])以及如何将其排序作为第二个参数(args[1]) )。我尝试了几种不同的方法,但我总是陷入同一个地方,解决这个问题的最佳方法是什么?顺便说一句,这是当前的代码。注释 block 是我尝试过的旧代码并保留它,以防万一。

import java.io.*;
import java.util.*;

public class PatientRecord {

public static void main(String args[])
{
System.out.println("Servando Hernandez");
System.out.println("Patient sorting Program.");

//
// Scanner scan = null;
// try
// {
// scan = new Scanner(new File(args[0]));
// }
// catch (FileNotFoundException e)
// {
// System.err.println("File path \"" + args[0] + "\" not found.");
// System.exit(0);
// }
//
// ArrayList<String> lines=new ArrayList<String>();
//
// while(scan.hasNextLine())
// lines.add(scan.nextLine());
//
// if(!(args.length == 0))
// {
// if(args[1] == lastname)
// {
// sortByLastName();
// }
// else if(args[1] == firstname)
// {
// sortByLastName();
// }
// else if(args[1] == age)
// {
// sortByAge();
// }
// else if(args[1] == roomnumber)
// {
// sortByRoomNumber();
// }
// }
//
List<Patient> patients = new ArrayList<>();
while(scan.hasNextLine())
{
String[] values= scan.nextLine().split(",");
patients.add(new Patient())
}
String sortType= args[1]

switch(sortType))
{
case "firsname":

break;
case "lastname":
break;
case "age":
break;
case "roomnumber":
break;
}
}
// static String sortByLastName()
// {
// Collections.sort(lines);
//
// for(String x : lines)
// System.out.println(x);
// }


class Patient
{
String firstName;
String lastName;
int age;
int roomNumber;
}

最佳答案

您应该编写一个自定义比较器,我们将其称为 PatientComparator。我不会完全实现比较方法,这是你的工作:-)

class PatientComparator implements Comparator<Patient> {
String sortType;
public PatientComparator(String sortType) {
this.sortType = sortType;
}

@Override
public int compare(Patient a, Patient b) {
// TODO: write your switch case here
return a.firstName.compareTo(b.firstName);
}

然后,您可以使用自己的比较器对患者进行排序:

Collections.sort(patients, new PatientComparator(arg[1]));

关于java - 将数组列表格式化为特定格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29176905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com