¾Æ·¡¿Í °°ÀÌ 'ÇϳªÀÇ ¸®½ºÆ®'¿¡ ´ëÇØ º°µµÀÇ Á¶°ÇÀ¸·Î streamÀ»(ÃÖÁ¾ÀûÀ¸·Î´Â List) ¸®ÅÏÇÏ´Â ÇÔ¼öµéÀ» ¸¸µé¾ú´Âµ¥
³Ê¹« ¹Ýº¹ÀûÀÌ°í Äڵ带 ÁÙÀϼöÀÖÀ»°Í °°Àºµ¥ ¹æ¹ýÀ» ¸øã°Ú½ººó´Ù
Á¦°¡ ¿øÇÏ´Â°Ç Áö±Ý°ú °°ÀÌ ÇϳªÀÇ ¸®½ºÆ®¿¡ ´ëÇØ '¿©·¯¹ø iterateÇÏ´Â ¹æ¹ý' ¸»°í
'ÇѹøÀÇ iterate·Î' ¾Æ·¡¿Í °°Àº ¿øÇÏ´Â °á°ú¸¦ ¾ò´Â ¹æ¹ýÀÌ ÀÖÀ»±î¿ä
ÇѹøÀÇ iterate·Î ºÒ°¡´É ÇÏ´Ù¸é Àû¾îµµ ¾Æ·¡¿Í °°ÀÌ ¹Ýº¹µÇ´Â Äڵ带 ÁÙÀϼöÀÖ´Â ¹æ¹ýÀÌ¶óµµ ÀÖ´ÂÁö ±Ã±ÝÇϺó´Ù
private List<MyObject> getMyObjs(List<AnotherObject> anotherObjs) {
...
return Stream.of(
getMyObjs1(anotherObjs, param1List), //1
getMyObjs2(anotherObjs, param2List), //2
...
)
.flatMap(i -> i)
.collect(Collectors.toUnmodifiableList());
}
// 1
private Stream<MyObject> getMyObjs1(List<AnotherObject> anotherObjs, List<Param1> param1List){
if(param1List.isEmpty()) return Stream.empty();
return anotherObjs.stream()
.map(anotherObj -> {
// Condition 1B (param1List¿¡ ÀÖ´Â °´Ã¼¸¦ ã¾Æ °á°ú°ªÀ» MyObject¿¡ ³Ö¾îÁÜ ¾ø´Ù¸é null ¸®ÅÏ)
return makeMyObject(1, /* Condition 1B °á°ú°ª */);
})
.filter(Objects::nonNull);
}
// 2
private Stream<MyObject> getMyObjs2(List<AnotherObject> anotherObjs, List<Param2> param2List){
if(param2List.isEmpty()) return Stream.empty();
return anotherObjs.stream()
.map(anotherObj -> {
//Condition 2B (param2List¿¡ ÀÖ´Â °´Ã¼¸¦ ã¾Æ °á°ú°ªÀ» MyObject¿¡ ³Ö¾îÁÜ ¾ø´Ù¸é null ¸®ÅÏ)
return makeMyObject(2, /* Condition 2B °á°ú°ª */);
})
.filter(Objects::nonNull);
}
Àâ´ã | 2927¸íÀÌ Àоú¾î¿ä. 3.16.76.227