从列表中获取不区分大小写的键<map <string,string>&gt;

时间:2016-06-02 06:37:52

标签: java

我有一个清单&gt;现在我想在不考虑案例的情况下搜索密钥。 即map.get(0).get(&#34; test&#34;)或map.get(0).get(&#34; TEST&#34;)。这两个结果都应该给出关键&#39; TESt&#39;。

的价值

我正在填写List&gt;从其他列表中列出&gt;如下。无法更改原始地图。谁能告诉我如何用大写字母添加键?

mappedListHashed是List&gt;  accessLvlArray是List&gt;

for (HashMap<String, String> map : mappedListHashed) {
                accessLvlArray.add(map);
            }

2 个答案:

答案 0 :(得分:3)

您可以随时在地图中放置小写字母

list.get(0).put("tEst".toLowerCase(),"value");

并致电

list.get(0).get("Test".toLowerCase())

以便始终搜索密钥的小写版本。

如果这不是一个选项,您可以使用自定义类来包装String键,该类以忽略大小写的方式覆盖equalshashCode

答案 1 :(得分:1)

您可以尝试覆盖put方法:

public class myMap extends HashMap<String, String> {
@Override
public String put(String key, String value) {
   return super.put(key.toLowerCase(), value);
}

public String get(String key) {
   return super.get(key.toLowerCase());
}
}