我对 Java 流很陌生。我是否需要在此循环中每次都重新创建流,或者是否有更好的方法来执行此操作?创建流一次并使用 .noneMatch 两次会导致“流已关闭”异常。
for ( ItemSetNode itemSetNode : itemSetNodeList )
{
Stream<Id> allUserNodesStream = allUserNodes.stream().map( n -> n.getNodeId() );
Id nodeId = itemSetNode.getNodeId();
//if none of the user node ids match the node id, the user is missing the node
if ( allUserNodesStream.noneMatch( userNode -> userNode.compareTo( nodeId ) == 0 ) )
{
isUserMissingNode = true;
break;
}
}
谢谢!
最佳答案
我建议您列出循环外的所有用户 ID。只需确保类 Id
覆盖 equals()
函数即可。
List<Id> allUsersIds = allUserNodes.stream().map(n -> n.getNodeId()).collect(Collectors.toList());
for (ItemSetNode itemSetNode : itemSetNodeList)
{
Id nodeId = itemSetNode.getNodeId();
if (!allUsersIds.contains(nodeId))
{
isUserMissingNode = true;
break;
}
}
关于Java 流在循环中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242863/