gpt4 book ai didi

java - 如何更新 lambda 函数外部声明的变量的值?

转载 作者:行者123 更新时间:2023-11-30 06:04:16 25 4
gpt4 key购买 nike

今天遇到以下代码,它将输入的 Long 秒数转换为 2days, 3hours, 1min, 5s 格式。我的问题是使用final long[]SecondsCpy = {Seconds};。 lambda 中的任何变量都必须是最终的或实际上最终的,因此,使用数组变量是一种 hack。有一个更好的方法吗?

    private static final LinkedHashMap<String, Long> readableTimeFormatMap = new LinkedHashMap<String, Long>() {
{
put("day", TimeUnit.DAYS.toSeconds(1));
put("hr", TimeUnit.HOURS.toSeconds(1));
put("min", TimeUnit.MINUTES.toSeconds(1));
put("sec", TimeUnit.SECONDS.toSeconds(1));
}
};


public static String getReadableTime(final long seconds) {

final StringJoiner readableTime = new StringJoiner(" ");

final long[] secondsCpy = { seconds };

readableTimeFormatMap.forEach((displayString, divider) -> {
readableTime.add(getReadableTimeUnit(displayString, secondsCpy[0] / divider));
secondsCpy[0] = secondsCpy[0] % divider;
});

return readableTime.toString().trim();
}

最佳答案

没有更好的方法可以做到这一点,您可以使用例如 AtomicLong

关于java - 如何更新 lambda 函数外部声明的变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com