Luckily, you don't need to do a loop here because you're using containers that can perform access and membership checking in constant time. Inside your `for` loop, for (ST_Orders__c s2 : [Select id,Approval_Status__c from ST_Orders__c where id in :TargetActorMap.keySet()]) { you know for sure that `s2.Id` is a key in `TargetActorMap`. You can get the Id that is its associated value with `TargetActorMap.get(s2.Id)`. Then, you can find out if that same Id is present in `RMUserIds` just by doing RMUserIds.contains(s2.Id);