我需要对作为输入提供给我的两个列表进行流式处理,我想比较两个列表中同一索引处的元素,如果第一个列表的元素总是大于第二个列表的元素,则返回true。我可以使用循环解决问题,但是从美学的Angular 来说,并将代码的可读性牢记在心,我想使用java流。
static boolean validate(List<LocalDate> endDates, List<LocalDate> startDates) {
//check for all elements if the element in first list is greater than elements in second list.
//return false if above condition fails.
Streams.zip(endDate, startDates, (endDate, startDate) -> {..})
}
2条答案
按热度按时间2fjabf4q1#
你可以用
Stream.allMatch
通过对列表元素进行一对一比较:当然,这假设两个列表的长度相同(如果
endDates
短于startDates
,你有一个错误;如果startDates
如果时间较短,将在上引发异常startDates.get(i)
)brvekthn2#
当前的streamapi实现(包括最新版本的java16)没有提供这种方法,您需要使用第三方库,例如streamex和该方法
StreamEx.zip()
或者使用java.util.IntStream.range
达到同样的效果。但是,您有责任避免索引溢出。最小样本: