java - 是否可以通过点表示法将一系列值流式传输/映射到一个结果中?
问题描述
我正在尝试做这样的事情。
public static int generateKey(Collection<Column> currentColumns, Object entry) {
int hash = 0;
for (Column c : currentColumns) {
hash = Objects.hash(hash, c.getHashValue(entry));
}
return hash;
}
但我知道它Objects.hash()
可以采用许多参数,因为它是点表示法,所以我想知道我是否可以从currentColumns
集合中流式传输,每个结果从getHashValue()
in 到Objects.hash
方法?
我的尝试不值得分享,因为我找不到任何关于这是否可能的指导。
编辑 - 对于一些现实世界的上下文,我正在对条目对象的集合执行类似 SQL 查询以生成 gorupBy / 聚合摘要,并且分组的对象的任何部分都需要关闭,所以我我正在使用这个东西为 groupingBy 收集器生成一个密钥。如果我的结果超过一定长度,那么列会被删除以尝试减少行数,然后会使用减少的列集重试。
解决方案
由于 vararg 基本上是数组的语法糖,因此您可以执行以下操作:
Object[] array = myObjects.stream().map(MyObject::getAValue).toArray();
int hash = Objects.hash(array);
推荐阅读
- javascript - 确认无效
- python - 熊猫为带有列表的列获取假人
- winapi - windows (MSYS2) 上编译的 gtkmm 程序缺少库
- java - Android Studio:更改从 java 类提交的 EditText
- c++ - 类中相同变量的不同值
- amazon-web-services - 无法将 EBS 挂载到 Kubernetes 集群中的 Pod
- javascript - 无法停止计时器。JavaScript
- python - 无法在 Windows 10 中导入 scrypt python 3.6
- java - 如何解决此“无法解析构造函数”错误?
- laravel - Laravel 表单输入 - 如何启用/禁用