Why does Java's
V Map.put(K key, V value)
not comply to the Command-Query Separation?
The Command-Query Separation Principle was created by Bertrand Meyer for the Eiffel Programming Language. The Java Programming Language is not the Eiffel Programming Language, so there is no reason for Java Programmers to follow rules of Eiffel Programmers.
There are hundreds of people who have written thousands of books on Object-Oriented Programming. It is highly unlikely that some random programmer working at Sun in the 1990s would have read every single one of those books, so it is to be expected that they may not know about at least one of the rules set out in those books.