如果我有 2 个 Streams,就像下面所示的方法一样
public Stream<Transaction> getPendingTransaction(Stream<PendingTransaction> pendingTransactionStream,Stream<ProcessedTransaction> processedTransactionStream){ }
并且我想根据某些标准(如
if
transaction.getId()
is same for an Transaction object present inpendingTransactionStream
andprocessedTransactionStreamthen
that object is same and we can collect them in a list.
我试过这样做但是它给出了错误
processedTransactionStream
.filter( (processedTransaction)->
{
pendingTransactionStream.anyMatch(s->s.getTransactionId().equals(processedTransaction.getTransactionId()) );
}
).collect(Collectors.toList());
最佳答案
嗯,您不能多次使用 pendingTransactionStream
Stream
。您可以将其转换为交易 ID 的 List
(或者更好的是 Set
),以在 filter
方法中使用。
Set<String> pending = pendingTransactionStream.map(PendingTransaction::getTransactionId)
.collect(Collectors.toSet());
List<ProcessedTransaction> processed =
processedTransactionStream.filter(pt -> pending.contains(pt.getTransactionId()))
.collect(Collectors.toList());
关于java - 如何在 Java 8 中的两个流之间进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54194137/