java - 使用 Java 流将集合转换为映射:如何将预定义的 Enum 作为值
问题描述
我有一个 Long 的集合,出于某种原因,我需要从这个集合中创建一个映射,该映射将集合的元素作为键,并将 1 个预定义的 Enum 作为值(所有键都具有相同的值)。
我正在尝试使用 Streams 来实现这一点,如下所示:
private Map<Long, Marker> mapMarker(Collection<Long> ids, Marker marker) {
return ids.stream().collect(Collectors.toMap(Function.identity(), marker));
}
编译器因以下错误而失败:
no instance(s) of type variable(s) T, U exist so that Marker conforms to Function<? super T, ? extends U>
有人可以向我解释为什么会失败吗?无论如何,使用 Streams 可以获得预期的结果吗?
解决方案
如果Marker
是你想映射到所有键的枚举ids
,你可以这样做:
return ids.stream().collect(Collectors.toMap(Function.identity(), id -> marker));
你已经很接近了,正如预期的id -> marker
那样Function
Collectors.toMap
推荐阅读
- c# - 如何正确地将英亩保存为从 C# 到 SQL 的小数
- json - 组件的 Apache Camel 默认数据格式
- jquery - 用于过滤的 DataTables 第二个标题行
- c# - 应用可以在 Unity 编辑器中运行,但不能在 Android 上运行
- java - 带有 UUID::toString 的“不能从静态上下文引用非静态方法”,但不适用于 Object::toString
- excel - 在excel中重构数据
- angular6 - 将模式验证器应用于输入类型号 Angular 6
- android - 杀不掉的安卓前台服务?
- javascript - 如何让 JavaScript 在我的浏览器中显示
- firebase - Framework7、Firebase、VueJS 路由 RequireAuth