在Java中排序多个ArrayList
我试图找出如何对从.txt文件中产生的ArrayList进行排序。我希望能够按名称的字母顺序对它们进行排序。下面是如何列出txt文件的示例:在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);
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()方法来更改输出。为什么不创建一个对象,然后将数据粘贴到对象中?然后您只需要一个对象列表,并且可以根据名称字段进行排序。