新集合类的使用:BidiMap、MultiMap、LazyMap

来源:互联网 发布:西门子数控编程指令 编辑:程序博客网 时间:2024/06/05 17:35

最近在项目中发现apache common.collections中新增了几个集合类,对之前项目中遇到的一些想要解决的问题,提供了极为方便的方案

BitMap:

BidiMap,直译为双向Map,也就是可以通过key找value,也可以通过value找到key。这点在我们日常的 key-value 匹配的时候很方便。

因为我们除此之外需要通过代码找到名称之外,也需要处理用户输入的名称,然后获取代码。

所以,在BidiMap当中,不光是key不能重复,value也不可以重复。


MultiMap:

MultiMap就是说一个key不再是简单的指向一个对象,而是一组对象。

add()和remove()的时候,跟普通话的Map无异,只是在get()时返回一个Collection.

利用MultiMap,我们可以很方便的往一个key上放数量不定的对象,也就实现了一对多


LazyMap:

LazyMap 意思就是这个Map中的键/值对一开始并不存在,当被调用到时才创建。

我们这样来理解,我们需要一个Map,但是由于创建成员的方法很“重”(比如数据库访问)

我们只有在调用get()时才知道如何创建,或者Map中出现的可能性很多。

我们无法在get()之前添加所有可能出现的键/值对。

我们觉得没有必要去初始化一个Map而又希望它在必要时自动处理数据。

关于LazyMap的使用再说两点,一般需要使用LazyMap.decorate(Map,Factory)的方式来创建,实现Factory中的create方法。





0 0
原创粉丝点击