报错展示:代码如下,图中第3行报错:java.lang.IllegalStateException: stream has already been operated upon or closed
Stream<MarketOrder> marketOrderStream = orderList.stream().filter(item -> !Arrays.asList(Const.EVENTMARKET_SPECIAL_STRATEGYS).contains(item));
logger.error("===pushOrderToChannel|orderList after filter===" + ConvertUtil.objectToJsonStr(marketOrderStream.collect(Collectors.toList())));
marketOrderStream.forEach(order -> {
//do something
});
错误分析:正常获取Stream后接下来进行遍历操作是没有问题的,由于为了调试在获取Stream之后加了一行日志打印,对Stream进行了一次操作,因此再操作Stream就会报上边的错误,原因是Stream只能被操作一次。在此错误之前,也了解过此特性,不小心就中招,简单记录一下,加深印象