我有一个Map<String, String>的String关键无非是像"123"等我得到的数值,因为这个数值是从UI在我的JSF组件来数值.我不想更改UI组件的合同.
现在我想创建一个Map<Long, String>基于上面的内容Map,我transform在Maps类中看到了一些方法但是所有方法都专注于转换值而不是键.
有没有更好的转换Map<String, String>方式Map<Long, String>?
我想要一个类似字典的类,它在查找时透明地使用转换后的键,以便我可以编写
k in d # instead of f(k) in d
d[k] # instead of d[f(k)]
d.get(k, v) # instead of d.get(f(k), v)
Run Code Online (Sandbox Code Playgroud)
等等(例如,想象一下f进行某种规范化,例如f(k)返回k.lower()。)
似乎我可以继承dict并覆盖各个操作,但并不是有一个集中位置来进行所有键都经过的这种转换。这意味着我必须覆盖所有__contains__、__getitem__、get和可能的__missing__等。这变得太乏味且容易出错,并且不是很有吸引力,除非这种开销超过手动替换f(k)普通 上的每个调用的开销dict。