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()); });

Reply via email to