Value lookupOrBuild(List<Item> items) {
Map<Key, Value> seen = new HashMap<>();
for (Item item : items) {
Key key = keyOf(item);
if (seen.containsKey(key)) return merge(seen.get(key), item);
seen.put(key, valueOf(item));
}
return emptyValue();
}
def lookup_or_build(items):
seen = {}
for item in items:
key = key_of(item)
if key in seen:
return merge(seen[key], item)
seen[key] = value_of(item)
return empty_value()
def lookupOrBuild(items: Iterable[Item]): Value =
val seen = scala.collection.mutable.Map[Key, Value]()
for item <- items do
val key = keyOf(item)
if seen.contains(key) then return merge(seen(key), item)
seen(key) = valueOf(item)
emptyValue()
Value lookupOrBuild(const std::vector<Item>& items) {
std::unordered_map<Key, Value> seen;
for (const Item& item : items) {
Key key = keyOf(item);
if (seen.count(key)) return merge(seen[key], item);
seen[key] = valueOf(item);
}
return emptyValue();
}