メソッド参照は引数が2つあると使えない

JavaGoldの勉強をしていると、ラムダ式を簡略化したメソッド参照というものが現れました。

//List
List<String> list = new ArrayList<>();
list.add("ほうじ茶");
list.add("太陽のマテ茶");
list.forEach(System.out::println);   // 1
//→引数が1つだけなので有効    
list.forEach((k) -> System.out.println(k));   // 2

//Map
Map<Integer, String> map = new TreeMap<>();
map.put(1, "一本でも人参");
map.put(2, "レオナルド・堕・ウンチ");
//map.forEach(System.out::println);  // 3 
//→コンパイルエラー  
map.forEach((k, v) -> System.out.println(k + v));   // 4


1と2、3と4はそれぞれ同じ処理です。
listではSystem.out.println()に引数kのみを渡しているため、エラーとなりませんが、
mapでは(k, v)と2つの引数を渡しているためコンパイルエラーとなります。