java - 流式传输多个属性 - Java 8(基本示例)

标签 java methods java-8 java-stream

我使用的是 Java 8,我可以获得 maxmin。效果很好,但我还需要检查另外 10 个属性的 maxmin(例如,User 年龄、 Prop 1、 Prop 2、 Prop 3等...)

我怎样才能做到这一点而不是重复相同的代码 10 次?

IntSummaryStatistics summaryStatistics = data.stream()
            .mapToInt(User::getProp2)
            .summaryStatistics();
    
    int max = summaryStatistics.getMax();
    int min = summaryStatistics.getMin();

并将数据归一化在 0 到 5 之间

 data.stream().forEach(d -> {
        d.setNormalized(5 * ((d.getProp2() - min) / (max - min));)
    });

最佳答案

您可以尝试结合 ToIntFunction 进行重构的好旧方法。界面

public static void normalization(Collection<User> data, ToIntFunction<User> getProp) {
    IntSummaryStatistics summaryStatistics = data.stream()
            .mapToInt(getProp)
            .summaryStatistics();

    int max = summaryStatistics.getMax();
    int min = summaryStatistics.getMin();

    data.forEach(d -> d.setNormalized(5 * ((getProp.applyAsInt(d) - min) / (max - min))));
}

参数ToIntFunction<User> getProp用于“age, prop1, prop2, prop3”部分。

调用方法:

normalization(data, User::getProp2);

关于java - 流式传输多个属性 - Java 8(基本示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65998703/

相关文章:

java - Project Euler #6 两个代码,不同的答案仅适用于大输入。为什么?

java - 使用 React Native Android 的 ./gradlew clean 问题

c++ - 如何为非模板类​​定义模板方法?

date - 使用 DateTimeFormatter 解析任意长度的日期字符串

java - 为什么使用 Optional.of 而不是 Optional.ofNullable?

java - Android格式化日历输出时间

java - 为什么通过 newCachedThreadPool 创建的 ExecutorService 是邪恶的?

Java - 接口(interface)和方法

java - 方法调用顺序

java - 使用 Java 流打印列表项