我有一个列表Things
,每个列表都有一个类别(一个int
)。我最终想要的是一个 Map,其中键是类别,值是该类别的Things
所有列表。目前我不得不相当手动地执行此操作,所以我想知道是否有某种我不知道的类型。
目前,我执行以下操作:
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
.