java – 可以在Stream中获取下一个元素吗?
发布时间:2020-12-14 05:22:17 所属栏目:Java 来源:网络整理
导读:我正在尝试将for循环转换为功能代码.我需要向前看一个值,也可以看一个值.是否可以使用流? 以下代码将罗马文本转换为数值. 不确定如果使用两个/三个参数的reduce方法可以帮助这里. int previousCharValue = 0;int total = 0;for (int i = 0; i input.length(
|
我正在尝试将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:如果您需要对集合的所有元素应用一些操作,并且您对订单不感兴趣,则流优秀.如果您需要以某种顺序处理元素,则必须使用迭代器,或者通过索引访问列表元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
