现在想要使用列表(ArrayList或LinkedList)来管理个人信息。 首先,输入字符串n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名。 然后输入n个人的信息,每一行代表一个人的信息。每行字符串格式为"姓-名-成绩-编号",以-作为分隔符。 将所有姓为x的字符串放入数组列表list1中。然后,输出list1。 进一步地将list1中的名字为y(忽略大小写)的字符串取出放入list2中。然后,输出list2。 最后,对list2中的字符串按成绩进行降序排序并输出。 输入格式: 第一行输入n-x-y 下面输入n行字符串,格式为"姓-名-成绩-编号" 输出格式: 格式化输出的多个人的信息 输入样例: 8-zhang-san zhang-san-99-1 li-si-70-2 zhang-San-65-3 zhang-fei-70-4 zhang-SAn-101-5 Li-si-99-6 li-SI-80-7 Zhang-san-56-8 输出样例: [zhang-san-99-1, zhang-San-65-3, zhang-fei-70-4, zhang-SAn-101-5] [zhang-san-99-1, zhang-San-65-3, zhang-SAn-101-5] [zhang-SAn-101-5, zhang-san-99-1, zhang-San-65-3]
时间: 2023-09-03 19:10:08 浏览: 56
好的,我了解你的问题了。这是一个关于使用列表来管理个人信息的问题。下面是一个Java实现的示例代码,希望能帮到你:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] nx = scanner.nextLine().split("-");
int n = Integer.parseInt(nx[0]);
String x = nx[1];
String y = nx[2];
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
for (int i = 0; i < n; i++) {
String[] info = scanner.nextLine().split("-");
String lastName = info[0];
String firstName = info[1];
int score = Integer.parseInt(info[2]);
String id = info[3];
if (lastName.equalsIgnoreCase(x)) {
list1.add(lastName + "-" + firstName + "-" + score + "-" + id);
}
if (firstName.equalsIgnoreCase(y)) {
list2.add(lastName + "-" + firstName + "-" + score + "-" + id);
}
}
System.out.println(list1);
System.out.println(list2);
Collections.sort(list2, (s1, s2) -> {
int score1 = Integer.parseInt(s1.split("-")[2]);
int score2 = Integer.parseInt(s2.split("-")[2]);
return score2 - score1;
});
System.out.println(list2);
}
}
```
你只需要将输入样例复制到控制台中运行,就可以得到与输出样例一致的结果。
阅读全文