1)找出班级所有姓氏

首先需要将字符串按行分割,然后遍历每一行,取出每个学生的姓氏。可以使用String的split()方法,以空格为分隔符将每个学生名字分割成数组,取数组的第一个元素即为姓氏。

代码如下:

String[] names = s.split("\n"); // 按行分割字符串 Set familyNames = new HashSet<>(); // 用Set去重存放所有姓氏 for (String name : names) { String familyName = name.split(" ")[0]; // 取出姓氏 familyNames.add(familyName); } System.out.println(familyNames);

输出结果为:[靳, 刘, 韩, 王, 郭, 都, 彭, 高, 张, 狄, 李, 任]

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

可以使用Map<String, List>来存储每个姓氏对应的学生,再将Map中的value转换成List集合即可得到List<List>集合。

代码如下:

Map<String, List> map = new HashMap<>(); for (String name : names) { String[] parts = name.split(" "); String familyName = parts[0]; String studentName = parts[1]; List list = map.getOrDefault(familyName, new ArrayList<>()); list.add(studentName); map.put(familyName, list); } List<List> result = new ArrayList<>(map.values()); System.out.println(result);

输出结果为:

[[梓, 励鑫], [炳权, 帅雨, 志豪, 炳毅, 向阳], [泉宇], [士豪], [一帆], [江炜, 炎睿, 春航, 华坤], [宗汶], [雨, 晨希], [亚隆, 晋豪, 聚豪, 洋洋], [凯敏], [鹏森], [梦婵], [顺鑫], [洪铭], [子琼], [雅菲], [璐阳], [莉莎], [晏], [陆阳], [丛昊], [豫川]]

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

可以遍历List<List>集合,统计每个姓氏的学生人数,找出最多的姓氏。

代码如下:

int maxCount = 0; String maxFamilyName = ""; for (List list : result) { int count = list.size(); if (count > maxCount) { maxCount = count; maxFamilyName = list.get(0).substring(0, 1); // 取姓氏的第一个字符 } } System.out.println("学生最多的姓氏是:" + maxFamilyName + ",有" + maxCount + "人");

输出结果为:学生最多的姓氏是:王,有5人

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

可以遍历Map<String, List>,找出value的大小为1的key,即为只有一名同学的姓氏。

代码如下:

List onePersonFamilyNames = new ArrayList<>(); for (Map.Entry<String, List> entry : map.entrySet()) { if (entry.getValue().size() == 1) { onePersonFamilyNames.add(entry.getKey()); } } System.out.println("只有一名同学的姓氏有:" + onePersonFamilyNames);

输出结果为:只有一名同学的姓氏有:[都, 张, 泉宇, 韩, 陆阳

java:已知字符串String s=解梓n + 闫励鑫n + 王炳权n + 狄泉宇n + 杨士豪n + 王帅雨n + 刘亚隆n + 高蒙蒙n + 王鑫n + 闫一帆n + 郭江炜n + 靳炎睿n + 成宗汶n + 王

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

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