35 lines
920 B
Java
35 lines
920 B
Java
package com.github.dtschust.zork.types;
|
|
|
|
import com.github.dtschust.zork.objects.ZorkObject;
|
|
|
|
import java.util.Collection;
|
|
import java.util.Map;
|
|
import java.util.Optional;
|
|
import java.util.function.Function;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class ZorkMapByName<T extends ZorkObject> {
|
|
private final Map<String, T> backing;
|
|
|
|
public ZorkMapByName(final Collection<T> source) {
|
|
backing = source.stream().collect(Collectors.toMap(ZorkObject::getName, Function.identity()));
|
|
}
|
|
|
|
public void put(final T object) {
|
|
backing.put(object.getName(), object);
|
|
}
|
|
|
|
public Optional<T> get(final String name) {
|
|
return Optional.ofNullable(backing.get(name));
|
|
}
|
|
|
|
public boolean containsName(final String name) {
|
|
return backing.containsKey(name);
|
|
}
|
|
|
|
public Collection<T> values() {
|
|
return backing.values();
|
|
}
|
|
}
|
|
|