编写代码实现使用列表(ArrayList或LinkedList)来管理个人信息。 首先,输入字符串n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名。 然后输入n个人的信息,每一行代表一个人的信息。每行字符串格式为"姓-名-成绩-编号",以-作为分隔符。 将所有姓为x的字符串放入数组列表list1中。然后,输出list1。 进一步地将list1中的名字为y(忽略大小写)的字符串取出放入list2中。然后,输出list2。 最后,对list2中的字符串按成绩进行降序排序并输出。
时间: 2024-04-02 20:37:50 浏览: 14
好的,下面是使用Java语言实现的代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class PersonalInfoManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入字符串n-x-y
String line = scanner.nextLine();
String[] parts = line.split("-");
int n = Integer.parseInt(parts[0]);
String x = parts[1];
String y = parts[2];
// 输入n个人的信息,存储到列表中
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
line = scanner.nextLine();
list.add(line);
}
// 将所有姓为x的字符串放入list1中,并输出list1
ArrayList<String> list1 = new ArrayList<>();
for (String info : list) {
parts = info.split("-");
String lastName = parts[0];
if (lastName.equals(x)) {
list1.add(info);
}
}
System.out.println(list1);
// 将list1中的名字为y(忽略大小写)的字符串取出放入list2中,并输出list2
ArrayList<String> list2 = new ArrayList<>();
for (String info : list1) {
parts = info.split("-");
String firstName = parts[1];
if (firstName.equalsIgnoreCase(y)) {
list2.add(info);
}
}
System.out.println(list2);
// 对list2中的字符串按成绩进行降序排序并输出
Collections.sort(list2, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String[] parts1 = o1.split("-");
String[] parts2 = o2.split("-");
int score1 = Integer.parseInt(parts1[2]);
int score2 = Integer.parseInt(parts2[2]);
return score2 - score1;
}
});
System.out.println(list2);
}
}
```
以上代码实现了题目所述的功能,具体实现过程如下:
1. 通过Scanner对象输入字符串n-x-y,解析出n、x、y的值。
2. 通过循环输入n个人的信息,并存储到列表list中。
3. 遍历列表list,将所有姓为x的字符串放入列表list1中,并输出list1。
4. 遍历列表list1,将名字为y(忽略大小写)的字符串取出放入列表list2中,并输出list2。
5. 对列表list2中的字符串按成绩进行降序排序,并输出list2。
希望能够帮到你,如果还有其他问题,可以随时提出。