<p>Is there a good way to have a <code>Map&lt;String, ?&gt;</code> get and put ignoring case?</p>

You need a wrapper class for your String key with a case-insensitive equals() and hashCode() implementation.  Use that instead of the String for the Map's key.
See an example implementation at
http://www.java.happycodings.com/Java_Util_Package/code3.html
I found it in 2 minutes of googling.  Looks sensible to me, though I've never used it.