Sorry,
On 03/15/2016 02:56 PM, Peter Levart wrote:
If you also care for constant lambda, this could be optimized even
further, but for the price of more complex code:
NamedPackage p = packages.get(name);
if (p instanceof Package) {
return (Package) p;
} else if (p == null) {
Package pkg = NamedPackage.toPackage(name, m);
p = packages.putIfAbsent(name, pkg);
if (p == null) {
return pkg;
}
}
return (Package)packages.compute((n, p) -> {
return (Package)packages.compute(name, (n, p) -> {
assert p != null;
// replace NamedPackage with Package
return (p instanceof Package) ? p :
NamedPackage.toPackage(p.name(), p.module());
});