我需要将键存储为不区分大小写,并且状态/状态/状态等键的所有值都合并到一个集合中。然而,问题是我需要在某个时候返回原始密钥的区分大小写版本,因此通用 CaseInsensitiveMap 不起作用。我只需要返回添加的“状态”的第一个大写字母,因此在这种情况下,我保留状态并丢弃状态/状态。
我已经查看了一些实现这种数据结构的选项,例如 Guava HashMultimap 和 Tuples,但似乎没有一个是完全正确的。
<CaseInsensitiveOriginalKey, OriginalKey, Set<Values>>
因此,例如,如果我添加一个值为 {Texas, Oklahoma} 的键“State”,它将存储为:
<state, State, {Texas, Oklahoma}>
这个想法是,如果我创建某种 .add(StATe, {Nebraska}) 那么地图,看到“状态”的不区分大小写的条目已经存在,变成:
<state, State, {Texas, Oklahoma, Nebraska}>
对于新键, .add(COLOR, {blue, red})
整体地图变为:
<state, State, {Texas, Oklahoma, Nebraska}>
<color, COLOR, {blue, red}>
- .get(ColoR) 返回 {red, blue}
- .getKey(coLOR) 返回颜色
关于如何最好地做到这一点的任何想法?