给定此分组代码:
List<Input> inputs = getInputs();
Map<LocalDateTime, List<Input>> inputsByDate =
inputs.stream()
.collect(
groupingBy(input -> input.getDateTime()));
有什么简洁的方法可以改变这一点,以便我们可以为每个 map 键输出 List<Output>
,我们通过签名为 private Output convertToOutput(Input input) {}
的函数运行每个输入。 ?
重要的一点是 Output
类没有getDateTime
方法,因此必须首先执行,但我们不需要未转换的对象,我们需要转换后的对象。
在 C# Linq-To-Objects 中这很容易,因为 GroupBy
方法给你 Func<TSource, TElement> elementSelector
这样你就可以转换值部分。如何在没有大量自定义代码的情况下用 Java 轻松完成此任务?
最佳答案
// ...
.collect(
Collectors.groupingBy(
input -> input.getDateTime()),
Collectors.mapping( // <--- This
TheClass::convertToOutput,
Collectors.toList());
关于java - 分组,但简洁地变换值元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47043744/