已给予:

List<Integer> myIntegers = Arrays.asList(1, 1, 2, 3, 4, 2);

返回:

A整数=Sum(整数频率)/2))

我可以使用Collectors.groupingBy()获得每个整数的频率,但是希望将每个频率值除以2,然后将映射中的所有值相加,只返回一个Integer:

Map<Integer, Long> myIntegerMap = myIntegers.stream().collect(Collectors.groupingby(Function.identity(), Collectors.counting()));

for(Map.Entry<Integer, Long> a : myIntegerMap.entrySet()){ System.out.print(a.getKey(), + "==>"); System.out.println(a.getValue());}

输出:

1==&gt;2

2==&gt;2

3==&gt;1

4==&gt;1

Desired 输出:

(2/2)+(2/2)+(1/2)+(1/2)=2

推荐答案

您不需要使用两个语句.您可以在与计算频率相同的 struct 中执行此操作.

首先计算频率,然后用CollectingAndThen对映射进行后处理,并将除以2后的值相加,得到所需的结果.

long result = myIntegers.stream().collect(Collectors.collectingAndThen(
         Collectors.groupingBy(Function.identity(),
                 Collectors.counting()),
           mp -> mp.values().stream().mapToLong(a->a/2).sum()))

System.out.println(result);

fingerprint

2

Java相关问答推荐

在Spring Boot中测试时出现SQL语法错误

Android视图覆盖不阻止点击它后面的控件

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

使用动态ID从json获取详细信息的Jolt规范

Java Swing:初始化身份验证类后未检测到ATM_Interface键事件

调用引发泛型异常的泛型方法时出现编译错误

在Java中,在单个逻辑行中连接列表和单个元素的正确方法是什么?

无法初始化JPA实体管理器工厂:无法确定为Java类型<;类>;推荐的JdbcType

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

Java连接池无法正常工作

如何在不删除Java中已有内容的情况下覆盖文件内容?

使用Class.this.field=Value初始化构造函数中的最后一个字段会产生错误,而使用this.field=Value则不会

垃圾回收器是否真的删除超出作用域的对象?

我可以在@Cacheable中使用枚举吗

JOLT根据值删除并保留其余的json键

如何使用Java ZoneID的区域设置?

如何使用外部函数从Java中获取C++ struct 的返回值&;内存API

如何在JSP中从select中获取值并将其放入另一个select

Eureka客户端无法使用用户/通行证注册到Eureka服务器

语句打印在错误的行(Java Token 问题)