stream流引发的问题

    
     SearchHit[] searchHits1 = searchHits.get();

     //方式一
for (int i = 0; i < searchHits1.length; i++) {
Map<String, Object> source = searchHits1[i].getSource();
list.add(source);
}
     //方式二
if (searchHits.isPresent()) {
Arrays.asList(searchHits.get()).parallelStream().forEach(InternalSearchHit -> list.add(InternalSearchHit.getSource()));
}

代码的逻辑是从es库中查出指定的数据,然后存放到list集合中,返回页面或者进行其他处理;这里遇到的问题就是,在方式二操作的时候,list中会出现空数据,如下图:

存在空数据的情况,所以就会造成各种想不到的bug,唉,头疼啊;

换成方式一显示正常;

为啥?

究其原因:我仔细找找。。。

找到了,是流的原因,换成以下代码,就可以了:

        if (searchHits.isPresent()) {
            Arrays.asList(searchHits.get()).stream().forEach(InternalSearchHit -> list.add(InternalSearchHit.getSource()));
        }

这里就要说说流的区别了:

猜你喜欢

转载自www.cnblogs.com/notchangeworld/p/11649464.html