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

Java中如何对分组后的列表执行投影并求和?

Java实现分组后计算数对数量求和的方案

嘿,刚好能帮你解决这个问题!先纠正个小细节:你写的Collerctors拼写错啦,正确的是Collectors,这个要注意不然编译会报错哦。

接下来咱们一步步来实现你要的功能,其实和C#的思路很像,只是Java的Stream API写法略有不同,这里给你两种常用的实现方式:

方式一:先分组再计算求和

先按你原来的思路把元素分组,再遍历每个分组计算可组成的数对数量(组大小整除2),最后求和:

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

public class GroupSumExample {
    public static void main(String[] args) {
        List<Integer> input = Arrays.asList(1, 2, 1, 1, 2, 3);
        
        // 先按元素值分组
        Map<Integer, List<Integer>> groups = input.stream()
                .collect(Collectors.groupingBy(x -> x));
        
        // 计算每个组的数对数量并求和
        int result = groups.entrySet().stream()
                .mapToInt(entry -> entry.getValue().size() / 2)
                .sum();
        
        System.out.println(result); // 输出:2(1组有3个→1对,2组有2个→1对,3组1个→0对,总和1+1+0=2)
    }
}

方式二:更高效的直接统计计数求和

如果不需要保留分组后的元素列表,只需要统计出现次数的话,可以直接用Collectors.counting()统计每个元素的出现次数,再计算数对数量求和,这样内存效率更高:

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

public class GroupSumExample {
    public static void main(String[] args) {
        List<Integer> input = Arrays.asList(1, 2, 1, 1, 2, 3);
        
        int result = input.stream()
                // 分组并统计每个元素的出现次数
                .collect(Collectors.groupingBy(
                        x -> x,
                        Collectors.counting()
                ))
                .values()
                .stream()
                // 每个次数整除2得到数对数量,再求和
                .mapToLong(count -> count / 2)
                .sum()
                .intValue();
        
        System.out.println(result); // 同样输出2
    }
}

对比你给出的C#代码var result = groups.Select(x => x.ToList().Count / 2).Sum();,Java里的groups.entrySet().stream().mapToInt(entry -> entry.getValue().size() / 2).sum()就是对应的实现逻辑,核心都是遍历每个分组,取大小整除2后累加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:57:50