美文网首页
多个key对应一个value该怎么存

多个key对应一个value该怎么存

作者: 刘皓lh | 来源:发表于2019-04-13 19:38 被阅读0次

    举一个不太恰当的应用场景,比如需要找到某个班的班主任,有三个字段,年级,班级,班主任。现在需要由年级和班级快速查到班主任是谁。

(1)两个字段用分隔符拼接做key

代码参考如下,将两个数据按照特定的分隔符拼接,但是这有一个问题,就是key中含有此分隔符。

比如key1="a|",key2="b",key3="a",key4="|b",key1+key2和key3+key4相等,这样数据就有问题了,

所以除非保证不会发生这种情况,否则千万不要用

示例代码1

(2)将多个key封装成一个对象

代码参考如下,将key封装成对象,有一点需要注意,必须重写GradeClass的equals和hashCode。

示例代码2

(3)MultiKeyMap

代码参考如下,从名字也可以看出,支持多个key的map

示例代码3

那就看一下他为什么能支持多个key吧。所有的put方法,随便看其中一个就可以

示例代码3

put代码,其实很简单就是将key封装成了MultiKey,他的内部重写了equals和hashCode并且还对hashCode进行了优化。

示例代码4

总结

三种方式对比,1基本上没有任何优点。

2和3的选择我认为当key只有两个时直接用MultiKeyMap就可以了。如果更多的key,或者这些key可以

封装成一个比较有意义的对象,采用第二种比较好。

相关文章

网友评论

      本文标题:多个key对应一个value该怎么存

      本文链接:https://www.haomeiwen.com/subject/jfcnhqtx.html