在java中,我要从已输入的信息(id和名称)中选取有共同信息的id
时间: 2024-03-26 14:36:25 浏览: 44
好的,您可以使用 Java 的集合框架来实现这个功能。以下是一种可能的实现方式:
假设您已经把输入的信息存储在一个 List 中,并且每个信息都是一个包含 id 和名称的对象,可以定义如下的类:
```java
public class Info {
private int id;
private String name;
// 构造函数、getter 和 setter 略
}
```
然后可以使用一个 Map 来记录每个 id 出现的次数,key 是 id,value 是出现次数。遍历 List,对于每个信息,如果 id 在 Map 中不存在,则将其作为 key,value 初始化为 1;否则将其对应的 value 加 1。最后再遍历一次 Map,找到 value 最大的 key 即可。
以下是代码示例:
```java
List<Info> infos = ...; // 输入的信息列表
Map<Integer, Integer> countMap = new HashMap<>();
for (Info info : infos) {
int id = info.getId();
countMap.put(id, countMap.getOrDefault(id, 0) + 1);
}
int maxCount = 0;
int mostCommonId = -1; // 如果没有共同的 id,返回 -1
for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
if (entry.getValue() > maxCount) {
maxCount = entry.getValue();
mostCommonId = entry.getKey();
}
}
System.out.println("出现次数最多的 id 是:" + mostCommonId);
```
这段代码的时间复杂度是 $O(n)$,其中 $n$ 是信息的个数。如果您需要同时输出多个共同的 id,可以将最大值与所有相等的 id 都输出。
阅读全文