我可能使用的常见数据结构类型是
Map<String,List<MyObject>> myMap...
我要做的常见操作是在给定匹配键的情况下将对象添加到列表中。例如,
myMap.addValueToList("Key", myObject)
实现这个并不是很棘手,但它有点难看(对于这个例子,假设myObject包含密钥):
for (MyObject myObject : myObjects) {
List<MyObject> newList = newArrayList();
if (myMap.contains(myObject.key)) {
newList = myMap.get(myObject.key);
}
newList.add(myObject);
myMap.put(myObject.key, newList);
}
我比这更经常地做这种操作。上一次,我为这个功能编写了我自己的类,但是我想知道在一个常用的库中是否没有某种实现,例如apache。
答案 0 :(得分:3)
这称为MultiMap,在Apache公共中有一个现有的实现: MultiMap
答案 1 :(得分:2)
我认为Guava MultiMap会节省您的时间。
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html
以下是一篇文章,通过示例解释其用法:
http://tomjefferys.blogspot.nl/2011/09/multimaps-google-guava.html