是否有一个很好的方法来Map
获得并放弃忽略案例?
TreeMap扩展了Map并支持自定义比较器.
String提供默认的不区分大小写的比较器.
所以:
final Mapmap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
比较器不考虑区域设置.在JavaDoc中阅读更多相关信息.
您可以使用Apache的Commons Collections中的CaseInsensitiveMap.
是否可以实现自己的Map覆盖put/get方法?
public class CaseInsensitiveMap extends HashMap{ ... put(String key, String value) { super.put(key.toLowerCase(), value); } get(String key) { super.get(key.toLowercase()); } }
这种方法不会强迫您更改"密钥"类型,而是使用Map实现.
您需要一个String键的包装类,它具有不区分大小写的equals()和hashCode()实现.使用它代替Map的键的String.
请参阅http://www.java.happycodings.com/Java_Util_Package/code3.html上的示例实现. 我在2分钟的谷歌搜索中找到了它.虽然我从未使用它,但对我来说看起来很明智.