- 找出班级所有姓氏
可以通过遍历字符串,找到每个名字的姓氏,然后加入一个Set集合中,最后转换为List返回即可。
Set surnameSet = new HashSet<>();
String[] names = s.split("\n");
for (String name : names) {
String surname = name.substring(0, 1);
surnameSet.add(surname);
}
List surnames = new ArrayList<>(surnameSet);
- 将每个姓氏的学生找出,各自放入List集合;组合成一个List<List>集合
可以通过遍历字符串,找到每个名字的姓氏,然后根据姓氏将学生放入对应的List中,最后将所有List组合成一个List<List>集合返回即可。
List<List> studentsBySurname = new ArrayList<>();
for (String surname : surnames) {
List students = new ArrayList<>();
for (String name : names) {
if (name.startsWith(surname)) {
students.add(name);
}
}
studentsBySurname.add(students);
}
- 找出学生最多的姓氏是什么,有多少人
可以遍历List<List>集合,统计每个姓氏的学生数量,然后找到最多的那个姓氏即可。
int maxStudents = 0;
String maxSurname = "";
for (List students : studentsBySurname) {
int numStudents = students.size();
if (numStudents > maxStudents) {
maxStudents = numStudents;
maxSurname = students.get(0).substring(0, 1);
}
}
System.out.println("学生最多的姓氏是:" + maxSurname + ",有" + maxStudents + "名学生");
- 有哪些姓氏,只有一名同学
可以遍历List<List>集合,找到每个只有一个学生的姓氏,然后放入一个Set集合中返回即可。
Set singleStudents = new HashSet<>();
for (List students : studentsBySurname) {
if (students.size() == 1) {
String surname = students.get(0).substring(0, 1);
singleStudents.add(surname);
}
}
System.out.println("只有一名同学的姓氏有:" + singleStudents)