You can only know if that code needs correction if you know what it is supposed to be doing. Here is the context:
Once you've done this, you may have a bunch of employees whose managers no longer work for the company (if any of Simon's direct-reports were themselves managers). The following code will tell you which employees have managers who no longer works for the company.
Map<Employee, Employee> m = new HashMap<Employee, Employee>(managers);
m.values().removeAll(managers.keySet());
Set<Employee> slackers = m.keySet();
So we start out with a map that maps every current employee to a manager. Then we remove all entries where the manager is a current employee. This leaves us with a map containing only entries for employees whose manager is not an employee. Finally, we get the keyset ... which gives us those employees as a set.
That seems correct to me1.
You suggest that the last line should be:
Set<Employee> slackers = m.values();
That would give you all managers who have left. But that isn't the answer the problem is asking for. (And besides, m.values() will return a Collection not a Set.)
TL;DR - no mistake in the tutorial.
1 - Apart from the incorrect assumption that an employee without a manager will be a slacker :-).