最近在项目中发现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方法。