次のコードがあるとします。
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Test {
    public static void main(String[] s) {
        Map<String, Boolean> whoLetDogsOut = new ConcurrentHashMap<>();
        whoLetDogsOut.computeIfAbsent("snoop", k -> f(k));
        whoLetDogsOut.computeIfAbsent("snoop", k -> f(k));
    }
    static boolean f(String s) {
        System.out.println("creating a value for \""+s+'"');
        return s.isEmpty();
    }
}
次にcreating a value for "snoop"、2回目の呼び出し時と同じように、computeIfAbsentそのキーの値がすでにあるので、メッセージが1回だけ表示されます。kラムダ式ではk -> f(k)ちょうどマップが値を計算するために、あなたのラムダに渡すキーのplaceolder(パラメータ)です。したがって、この例では、キーは関数呼び出しに渡されます。
または、次のように書くこともできます。whoLetDogsOut.computeIfAbsent("snoop", k -> k.isEmpty());ヘルパーメソッドなしで同じ結果を得るには(ただし、デバッグ出力は表示されません)。また、既存のメソッドへの単純な委譲であるため、さらに簡単に記述できます。whoLetDogsOut.computeIfAbsent("snoop", String::isEmpty);この委任では、パラメータを記述する必要はありません。
近い例にあなたの質問にあるように、あなたはそれを書くことができるwhoLetDogsOut.computeIfAbsent("snoop", key -> tryToLetOut(key));(あなたが、パラメータに名前を付けるかどうかは関係ありませんkかkey)。それともとしてそれを書くwhoLetDogsOut.computeIfAbsent("snoop", MyClass::tryToLetOut);場合tryToLetOutであるstaticかwhoLetDogsOut.computeIfAbsent("snoop", this::tryToLetOut);場合は、tryToLetOutインスタンスメソッドです。