本文主要是介绍曾经遇到过的无法解释的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为不能直接展示生产数据与生产数据结构,所以写一个简单的例子
class Stu{
private String name;
private int age;
getter setter constructor 略
}
List<Stu> list = new ArrayList();
list.add(new Stu("s1",16));
list.add(new Stu("s2",36));
list.add(new Stu("s3",86));
list.add(new Stu("s4",106));
boolean a = list.stream().anyMatch(s->s.getAge()<50);
boolean b = list.stream().allMatch(s->s.getAge()>=50);
按道理a =true;b=false; 但是生产确实a=false,b=true,试了好几次都一样,检查好几遍感觉没问题
之后我改进代码
boolean a = list.stream().map(Stu::getAge).anyMatch(age->age<50);
boolean b = list.stream().map(Stu::getAge).allMatch(age->age>=50);
a就等于true,b就等于false了 ,很奇怪,就多加个map(Stu::getAge)就好了。
之后想复现这个问题,还不能复现,感觉stream可能在极端情况出现了bug。
这篇关于曾经遇到过的无法解释的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!