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 ())); }
여기서 우리는 흐름의 차이에 대해 이야기해야합니다