最近我就遇到了这样一个问题,Java没有给我们提供现成的类,我们完全可以自己开发个类继承List和Map(Java原来就有不可以同时继承List和Map的Bug,因此特意去看了下这个Bug的状态——Closed,呵呵,应该是很老的版本才有的问题,用新版本的朋友不用担心会遇到这个问题),但是完全没必要白花那个力气,因为Apache的Commons Collections的Jar包里已经为我们提供了一个相当完备的类来满足我们这样的要求完全是绰绰有余。因此我们现在要做的仅仅是引入Jar包,然后使用这个现成的好东西——ListOrderedMap就可以啦。
让我们来看看代码:
ListOrderedMap list = new ListOrderedMap();
for(int i = 0; i < objs.length; i++)
{
list.put(objs[i].getId(), objs[i]);
} 初始化很简单吧,没有一点技术难度,往里边放数据和Map没一点区别,需要注意的是Map我们可以在初始化的时候加上类型,比如Map<String, String>,但是ListOrderedMap不可以,就这么点差别,要记得哦。但是这个差别也是ListOrderedMap让人最不满意的地方,因为这说明他是类型不安全的。
接下来,看看我们都用到了ListOrderedMap的哪些方法:
int themeId = ((Obj) list.getValue(0)).getThemeId();
int index = list.indexOf(key);
if (index == list.size() - 1)
{
obj= (Obj) list.getValue(0);
} else if (index != -1)
{
obj= (Obj) list.getValue(index + 1);
}
0

