我有一个Things
的列表,其中每个列表都有一个类别(一个int
)。我想结束的是一个Map,其中关键是类别,并且值是该类别的所有Things
的列表。目前我必须手动完成这项工作,所以我想知道是否有某种我不知道的类型。Java链式收集图
目前我做类似如下:
List<Thing> things = thingGenerator.generateTheThings();
Map<Integer,List<Thing>> categoriesOfThing = new TreeMap<Integer,List<Thing>>();
for(Thing thing : things) {
int thingCategory = thing.getCategory();
List<Thing> oneCategoryOfThing;
if(categoriesOfThing.containsKey(thingCategory) {
oneCategoryOfThing = categoriessOfThings.get(thingCategory);
}
else {
oneCategoryOfThing = new ArrayList<Thing>();
}
oneCategoryOfThing.add(thing);
categoriesOfThing.put(thingCategory,oneCategoryOfThing);
}
for(int i = 0; i < numberOfCategories; i++) {
List<Thing> similarThings = categoriesOfThing.get(i);
foo(similarThings);
}
我想什么可以做的东西有点像以下:
List<Thing> things = thingGenerator.generateTheThings();
ChainedMap<Integer,Thing> categoriesOfThing = new ChainedMap<Integer,Thing>();
for(Thing thing : things) {
categoriesOfThing.add(thing.getCategory(), thing);
}
for(int i = 0; i < numberOfTypes; i++) {
List<Thing> similarThings = categoriesOfThing.get(i);
foo(similarThings);
}
很像Apache MultiKey允许为了在地图中使用多个键,我想要在List
中检索多个值。
是你的事情的模板类?即'东西' –
Wug
2012-08-06 14:21:39
不,它只是包含数据和一些简单的方法。 – Edd 2012-08-06 14:27:10
好的,所以当你说“这个值是所有”那类*类型*的事物“的列表时,你的意思是你按价值而不是按类型查找?你的措辞让我觉得你正在寻找类似于'Map,List >'(这可能不是正确的语法) –
Wug
2012-08-06 14:31:41