스트림 흐름 문제로 인한

    
     SearchHit [] = searchHits1 searchHits.get (); 

     //方式一
대한 INT (I = 0; I <searchHits1.length; 내가 ++) {
지도 <문자열 오브젝트> 소스 searchHits1 = [I] .getSource ();
에는 list.add (소스);
}
     //方式二
경우 (searchHits.isPresent ()) {
Arrays.asList (searchHits.get ()) parallelStream () 대해 forEach (InternalSearchHit ->에는 list.add (InternalSearchHit.getSource ()))..;
}

코드 라이브러리 로직 ES 지정된 데이터로부터 분리 한 다음 세트리스트에 저장된 페이지를 리턴되거나 처리되고, 여기서 문제가되면 제 2 동작 모드리스트가 널 데이터 것, 즉 다음과 같이 도표 :

 

 

빈 데이터의 존재는, 예기치 않은 버그, 슬프게도, 두통 아의 모든 종류의 원인이됩니다;

정상 모드로, 디스플레이;

이유는 무엇입니까?

그 이유는 : 나는주의 깊게 본다. . .

스트림의 원인 발견과에 다음 코드로 대체 :

        경우 (searchHits.isPresent ()) { 
            Arrays.asList (searchHits.get ()) 스트림 () 대해 forEach (InternalSearchHit.. -> 에는 list.add (InternalSearchHit.getSource ())); 
        }

 

여기서 우리는 흐름의 차이에 대해 이야기해야합니다

 

추천

출처www.cnblogs.com/notchangeworld/p/11649464.html