微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 可以在Stream中获取下一个元素吗?

我正在尝试将for循环转换为功能代码.我需要向前看一个值,也可以看一个值.是否可以使用流?
以下代码将罗马文本转换为数值.
不确定如果使用两个/三个参数的reduce方法可以帮助这里.
int prevIoUsCharValue = 0;
int total = 0;

for (int i = 0; i < input.length(); i++) {
    char current = input.charat(i);

    RomanNumeral romanNum = RomanNumeral.valueOf(Character.toString(current));

    if (prevIoUsCharValue > 0) { 
        total += (romanNum.getNumericValue() - prevIoUsCharValue);
        prevIoUsCharValue = 0;
    } else {
        if (i < input.length() - 1) {

            char next = input.charat(i + 1);
            RomanNumeral nextNum = RomanNumeral.valueOf(Character.toString(next));
            if (romanNum.getNumericValue() < nextNum.getNumericValue()) {
                prevIoUsCharValue = romanNum.getNumericValue();
            }
        }
        if (prevIoUsCharValue == 0) {
            total += romanNum.getNumericValue();
        }

    }

}

解决方法

不,这是不可能使用流,至少不容易.流API从处理元素的顺序抽象出来:流可以并行处理或以相反的顺序进行处理.所以在流抽象中不存在“下一个元素”和“上一个元素”.

您应该使用最适合该作业的API:如果您需要对集合的所有元素应用一些操作,并且您对订单不感兴趣,则流优秀.如果您需要以某种顺序处理元素,则必须使用迭代器,或者通过索引访问列表元素.

原文地址:https://www.jb51.cc/java/122809.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐