美文网首页
多个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