我从转换内部传统的for循环开始,在使用AtomicInteger对计数器变量进行排序时遇到了同样的问题,但不确定如何对arrayList进行排序,而且我也无法在lambda块内定义arrayList,因为它与外部while循环中存在的I变量有依赖关系。
任何帮助都将非常感谢!!!提前道谢。
下面是我的代码片段:-
public String somemethod(ArrayList someValues){
int i=0;
String status="Failed";
ArrayList someOtherValues = new ArrayList();
try
{
while ( i < (someValues.size()))
{
someOtherValues = (ArrayList) someValues.get(i);
someOtherValues.replaceAll(t -> Objects.isNull(t) ? "" : t); //converting every null to "" within the arrayList someOtherValues
int count=4;
AtomicInteger counter=new AtomicInteger(5);
if(!someOtherValues.get(0).toString().equals(""))
{
while ( count < (someOtherValues.size()))
{
IntStream.range(0, 3).forEach(k -> {
someObjectClass someObject=new someObjectClass();
someOtherObjectClass id = new someOtherObjectClass(someOtherValues.get(0).toString(),someOtherValues.get(count).toString()) //Line where the error is
someObject=new someObjectClass(id);
someObject.setId(id);
if(someCondition)
{
try
{
someObject.setSomething(someValue);
counter.incrementAndGet()
}
}
someObject.setsomeOtherValues1(someOtherValues.get(1).toString());
someObject.setsomeOtherValues2(someOtherValues.get(3).toString())
}
count=counter.get();
counter.incrementAndGet();
}
}
i++;
}
catch(Exception e)
{
return status;
}
}
使用Java8streams/lambdas/foreach更改/优化以上函数为更少的代码行是不是真的不可能?
一般来说,尝试在lambda定义内部更改外部变量不是一个好主意。但是由于Java关于最终字段和变量的非常松散的概念只适用于赋值,所以还是可以做到的。在带有外部定义的变量的lambda表达式中,唯一不能做的是赋新值。所以这不编译:
List<String> lst = new ArrayList<>();
myLambda = e -> {
lst = new ArrayList<>(); //this violates the 'final' rule
lst.add(e);
}
然而,可以调用外部变量的任何方法,即使它改变了变量的状态。这将起作用:
myLambda = e -> {
lst.add(e);
}
即使您仍然更改了变量lst
的状态,这也是合法代码。
我在尝试使用lambda表达式时遇到了这个错误。
本文向大家介绍在Java中如何使用lambda表达式实现ToLongBiFunction ?,包括了在Java中如何使用lambda表达式实现ToLongBiFunction ?的使用技巧和注意事项,需要的朋友参考一下 ToLongBiFunction<T,U>是来自java.util.function函数包裹。此函数接口接受两个引用类型参数作为输入,并生成长值结果。ToLongBiFunctio
本文向大家介绍在Java中如何使用Lambda表达式实现DoubleToIntFunction?,包括了在Java中如何使用Lambda表达式实现DoubleToIntFunction?的使用技巧和注意事项,需要的朋友参考一下 DoubleToIntFunction是中定义的函数接口java.util.function函数Java8版本引入的包。这个函数接口接受一个双值参数并产生一个int值的结果
本文向大家介绍在Java中如何使用Lambda表达式实现DoubleToLongFunction?,包括了在Java中如何使用Lambda表达式实现DoubleToLongFunction?的使用技巧和注意事项,需要的朋友参考一下 DoubleToLongFunction是一个内置函数接口java.util.function函数Java8中引入的包。此函数接口接受双值参数并生成长值结果。Doubl
本文向大家介绍Java中如何使用lambda表达式实现ToLongFunction ?,包括了Java中如何使用lambda表达式实现ToLongFunction ?的使用技巧和注意事项,需要的朋友参考一下 ToLongFunction<T>是中定义的函数接口java.util.function函数包裹。此函数接口接受引用类型作为输入,并生成长值结果。ToLongFunction<T>接口可用作l
问题内容: 我试图在 jrxml 文件中使用lambda表达式来获取我的字段的值。 我导入了适当的类,但这给了我错误 p无法解析为变量。 如何在 JasperReports 模板中使用Lambda表达式? 例外: 问题答案: 如果您使用的是Eclipse JDT编译器,请首先确保您具有一个相当新的版本。 例如,您可以从Maven获得4.5.1 ,然后将以下属性添加到jasperreports.pr