gpt4 book ai didi

java - 用 java 8 foreach 替换 for 循环来更新值

转载 作者:行者123 更新时间:2023-12-02 07:49:37 25 4
gpt4 key购买 nike

我希望用优雅的 java 8 流或 lambda 解决方案替换以下 for 循环。有没有什么简洁高效的东西?

    public static void main(String[] args) {
ArrayList<Integer> myList = new ArrayList<>( Arrays.asList( 10,-3,5));

// add 1/2 of previous element to each element
for(int i =1 ;i < myList.size(); ++i )
myList.set(i, myList.get(i)+myList.get(i-1)/2);

// myList.skip(1).forEach( e -> e + prevE/2 ); // looking for something in this spirit
}

最佳答案

您的循环评估依赖于先前评估的结果。相当于

for(int i = 1, value = myList.get(0); i < myList.size(); i++ ) {
value = myList.get(i) + value/2;
myList.set(i, value);
}

使用 Stream API 或 lambda 表达式并不能实现真正的简化。事实上,我更喜欢上面显示的变体,即使它更大而不是更小,因为它清楚地表明了实际发生的情况(并且通过避免多次 List 查找可能会稍微更有效)。

如果您创建一个新的列表,它还允许您对位置进行独立编程:

List<Integer> srcList = Arrays.asList(10, -3, 5), dstList = new ArrayList<>();

int value = 0;
for(Integer i: srcList) {
value = i + value/2;
dstList.add(value);
}

关于java - 用 java 8 foreach 替换 for 循环来更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48561183/

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