- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图将字符串流映射到这些字符串的哈希值,同时将字符串保留在输出中。我最终将哈希值转换为字符串,以便我可以映射到 String[] 甚至将它们连接在一起作为一个字符串。我更希望 lambda 的输出可以是 String 和 byte[] ,以避免一次转换。如果没有定义一个特定的值对象来仅保存这两个值,是否存在一种互惠的 BiConsumer,即 BiProducer?
public static final ArrayList<String> inputs; // ... initialized elsewhere
...
inputs.parallelStream().map(s -> {
try {
String h = String.format("%032x",
new BigIntger(1, MessageDigest.getInstance("MD5")
.digest(s.getBytes(StandardCharsets.UTF_8))));
String[] r = {s, h};
return r;
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}).foreach(tuple -> {String input = tuple[0], hash = tuple[1]; ...});
你看,如果在 foreach
中我想要一个 byte[]
的哈希值,我会希望传递 map
中已有的内容,否则我将在字符串之间进行转换,只是为了能够方便地传递它。显然,如果我创建一个类来容纳这两种类型,那将是一个费力的解决方案;是否没有预先存在的可供性来将步骤映射到下游的多个值?
最佳答案
抛开对 BiConsumer 的困惑不谈,感谢您的建议 StreamEx
在评论中。看起来它有一个非常好的写法:
StreamEx.of(inputs).toMap(Functions.identity(),
s -> {
try {
return new BigIntger(1, MessageDigest.getInstance("MD5")
.digest(s.getBytes(StandardCharsets.UTF_8))));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}).etc...;
事实证明,对于这种情况,因为我知道输入是唯一的,所以我可以使用可用的 grouping collector 来执行类似的操作。 :
inputs.stream().collect(
toConcurrentMap(Functions.identity(),
s -> {
try {
return new BigIntger(1, MessageDigest.getInstance("MD5")
.digest(s.getBytes(StandardCharsets.UTF_8))));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}).etc...;
关于java - 是否有 BiConsumer 的反向映射到元组等多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36857666/
我有一些与此非常相似的逻辑,其中我有可以在请求期间更新的单元和不同字段。 public class Unit { int x; int y; public void updat
举个例子: public class MyConsumer { public void accept(int i) {} public static void biAccept(MyC
我正在尝试弄清楚它是如何工作的。 我将列出我认为正在发生的事情,希望有人能告诉我我在某些地方错了。或者告诉我这是如何/为什么有效的。 public BiConsumer, T> accumulator
我在下面写了接受 BiConsumer 的方法,当我传递方法的方法引用时 testBiConsumer(String a, String b)我收到一个编译错误: Multiple markers a
我试图将字符串流映射到这些字符串的哈希值,同时将字符串保留在输出中。我最终将哈希值转换为字符串,以便我可以映射到 String[] 甚至将它们连接在一起作为一个字符串。我更希望 lambda 的输出可
我有一个 JTable TableModel 的列定义列表,列“B”有一个接受 BauwerkOption 类和字符串的 setter BiConsumer。 当我尝试在带有“...接受...”的行中
我正在尝试通过 LambdaMetafactory 动态创建 BiConsumer 类型的方法引用。我试图应用在 https://www.cuba-platform.com/blog/think-tw
我尝试在我的一个脚本中获得最大性能,而不进行重大重构。 我发现了使用反射从 Field 创建 BiConsumer 的方法。 return (c, v) -> { try {
我正在尝试编译这段代码: import java.util.Collection; import java.util.function.BiConsumer; import de.hybris.pla
我遇到这样的编译器失败: BiConsumer 类型中的方法accept (Integer, Integer) 不适用于参数(Object, Object)。如何强制转换两个整数输入,以便编译器将它们
这个问题已经有答案了: Lambda 'special void-compatibility rule' - statement expression (3 个回答) 已关闭 3 年前。 我知道 Bi
我想从 BufferedReader 中读取行,将字符串分成两部分并将它们提供给 BiConsumer。是否可以在不事先将两个拆分字符串收集到 Map 的情况下完成? 例子: bufferedRead
我是 Java 8 的新手,我找不到任何原始的 BiConsumer(IntBiConsumer 等),但是有一个 ToIntBiFunction,它是 BiFunction 的原始特化。还有一个与
我有一个类(Filter),它有几个变量: class Filter { Integer intVal; Double doubleVal; String strVal;
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 5 年前。 Improve
我有这个: class Converter { Collection> fieldconverters=... Class targetclazz; // Set through constr
这个问题已经有答案了: What's the difference between instance method reference types in Java 8? (3 个回答) 已关闭 7 年
据我了解,Kotlin 应该能够使用 JRE 6 运行。但是由于引用了 Java 8 类 (java/util/函数/BiConsumer) 编译器测试.kt: fun main(args: Arra
这个问题在这里已经有了答案: What's the difference between instance method reference types in Java 8? (3 个答案) 关闭
我尝试编写一些流代码,将 report 对象减少为一个 report 对象。 我有这个java代码获取字符串(请求)获取 http 响应 --> 将其传递给内存中保存的旧响应进行比较。 我想将 n 个
我是一名优秀的程序员,十分优秀!