用java找出已输入信息(id和名称)种出现在多个院系里的学号
时间: 2024-03-26 11:36:25 浏览: 114
好的,您可以使用 Java 的集合框架来实现这个功能。以下是一种可能的实现方式:
假设您已经把输入的信息存储在一个 List 中,并且每个信息都是一个包含 id、名称和院系的对象,可以定义如下的类:
```java
public class Info {
private int id;
private String name;
private String department;
// 构造函数、getter 和 setter 略
}
```
然后可以使用一个 Map 来记录每个 id 出现的次数,key 是 id,value 是出现次数。遍历 List,对于每个信息,如果 id 在 Map 中不存在,则将其作为 key,value 初始化为一个空的 Set;否则获取其对应的 Set,将当前信息的院系加入 Set 中。最后再遍历一次 Map,找到 value 中元素个数大于 1 的 key,即出现在多个院系中的学号。
以下是代码示例:
```java
List<Info> infos = ...; // 输入的信息列表
Map<Integer, Set<String>> deptMap = new HashMap<>();
for (Info info : infos) {
int id = info.getId();
String dept = info.getDepartment();
Set<String> set = deptMap.getOrDefault(id, new HashSet<>());
set.add(dept);
deptMap.put(id, set);
}
List<Integer> commonIds = new ArrayList<>();
for (Map.Entry<Integer, Set<String>> entry : deptMap.entrySet()) {
if (entry.getValue().size() > 1) {
commonIds.add(entry.getKey());
}
}
System.out.println("出现在多个院系中的学号是:" + commonIds);
```
这段代码的时间复杂度是 $O(n)$,其中 $n$ 是信息的个数。如果您需要同时输出每个出现在多个院系中的学号对应的院系列表,可以修改 Map 的 value 类型为 List,将院系名字依次加入 List 中即可。
阅读全文