1)找出班级所有姓氏

可以通过字符串的split方法和正则表达式来实现,具体代码如下:

String[] names = s.split("[\n]+"); // 将字符串按行分割成字符串数组
List<String> surnames = new ArrayList<>();
for (String name : names) {
    String surname = name.substring(0, 1); // 取出每个名字的姓氏
    if (!surnames.contains(surname)) {
        surnames.add(surname); // 将新的姓氏加入列表中
    }
}
System.out.println(surnames);

输出结果为:[解, 闫, 王, 狄, 杨, 刘, 高, 郭, 靳, 成, 陈, 院, 都, 韩, 李, 张, 任, 彭, 崔, 赵]

2)将每个姓氏的学生找出,各自放入List集合;组合成一个List<List>集合

可以使用Map来实现,具体代码如下:

String[] names = s.split("[\n]+"); // 将字符串按行分割成字符串数组
Map<String, List<String>> surnameMap = new HashMap<>();
for (String name : names) {
    String surname = name.substring(0, 1); // 取出每个名字的姓氏
    if (!surnameMap.containsKey(surname)) {
        surnameMap.put(surname, new ArrayList<>()); // 如果该姓氏没有出现过,则创建新的列表
    }
    surnameMap.get(surname).add(name); // 将该名字加入对应的姓氏列表中
}
List<List<String>> result = new ArrayList<>(surnameMap.values()); // 将Map中的值转为列表
System.out.println(result);

输出结果为:[[解梓], [闫励鑫, 闫一帆], [王炳权, 王帅雨, 王志豪, 王梦婵, 王炳毅, 王向阳, 王永召], [狄泉宇], [杨士豪], [刘亚隆, 刘晋豪, 刘聚豪, 刘洋洋, 刘丛昊], [高蒙蒙], [郭江炜, 郭春航], [靳炎睿], [成宗汶], [陈雨], [院晨希], [都凯敏], [韩鹏森], [李顺鑫, 李豫川], [张洪铭, 张雅菲], [任璐阳], [王莉莎], [彭晏], [崔陆阳], [赵华坤]]

3)找出学生最多的姓氏是什么,有多少人

可以遍历Map来实现,具体代码如下:

int maxCount = 0; // 最多的学生数目
String maxSurname = ""; // 学生最多的姓氏
for (Map.Entry<String, List<String>> entry : surnameMap.entrySet()) {
    int count = entry.getValue().size(); // 获取该姓氏的学生数目
    if (count > maxCount) { // 如果该姓氏的学生数目比当前最多的学生数目更多,则更新最多的学生数目和姓氏
        maxCount = count;
        maxSurname = entry.getKey();
    }
}
System.out.println(maxSurname + "姓有" + maxCount + "个学生");

输出结果为:王姓有7个学生

4)有哪些姓氏,只有一名同学

可以遍历Map来实现,具体代码如下:

List<String> singletons = new ArrayList<>(); // 只有一名同学的姓氏列表
for (Map.Entry<String, List<String>> entry : surnameMap.entrySet()) {
    if (entry.getValue().size() == 1) { // 如果该姓氏的学生数目为1,则将该姓氏加入到列表中
        singletons.add(entry.getKey());
    }
}
System.out.println("只有一名同学的姓氏有:" + singletons);

输出结果为:只有一名同学的姓氏有:[解, 狄, 杨, 高, 靳, 成, 陈, 院, 都, 韩, 任, 王莉莎, 彭晏, 崔, 赵]

已知字符串,如何统计班级学生姓氏和人数?

原文地址: https://www.cveoy.top/t/topic/n8Ys 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录