因为不能直接展示生产数据与生产数据结构,所以写一个简单的例子
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)就好了。文章来源:https://www.toymoban.com/news/detail-739355.html
之后想复现这个问题,还不能复现,感觉stream可能在极端情况出现了bug。文章来源地址https://www.toymoban.com/news/detail-739355.html
到了这里,关于曾经遇到过的无法解释的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!