You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找List中重复出现指定x次的元素?

实现思路

要提取恰好重复x次的元素,只需要在你现有获取重复元素的逻辑基础上,增加频次匹配的过滤规则即可,整体分为两步:

  • 第一步:遍历目标List,统计每个元素的出现次数,生成「元素-出现次数」的映射表
  • 第二步:遍历映射表,筛选出出现次数恰好等于指定值x的元素,即为最终结果
通用实现逻辑(不依赖语言内置工具)

如果不想用语言自带的统计工具,可以手动实现统计逻辑:

  1. 初始化一个空哈希表(字典/Map)用于存储元素和对应计数
  2. 遍历原List的每一个元素:
    • 元素已存在于哈希表中时,对应计数+1
    • 元素不存在于哈希表中时,将元素存入哈希表,计数初始化为1
  3. 遍历哈希表的所有键值对,收集计数等于x的键,就是你需要的结果
常见语言代码示例

Python 实现

可以用collections.Counter快速完成频次统计:

from collections import Counter

def get_elements_with_x_occurrences(input_list, target_count):
    count_map = Counter(input_list)
    # 筛选恰好出现target_count次的元素
    return [elem for elem, count in count_map.items() if count == target_count]

# 测试用例
test_list = [1,2,2,3,3,3,4,4,4,4]
print(get_elements_with_x_occurrences(test_list, 3)) # 输出:[3]

如果需要只筛选重复出现的(即排除出现1次的),只要在过滤条件中额外加count > 1的判断即可,和你现有获取重复元素的逻辑完全兼容。

Java 8+ 实现

用Stream流配合groupingBy实现:

import java.util.List;
import java.util.stream.Collectors;

public class FrequencyFilter {
    public static <T> List<T> getElementsWithXOccurrences(List<T> inputList, int targetCount) {
        return inputList.stream()
                .collect(Collectors.groupingBy(elem -> elem, Collectors.counting()))
                .entrySet()
                .stream()
                .filter(entry -> entry.getValue() == targetCount)
                .map(entry -> entry.getKey())
                .collect(Collectors.toList());
    }
}

内容的提问来源于stack exchange,提问作者user10181871

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:15:05