のリストがありThings
、それぞれにカテゴリ( int
) があります。私が最終的に得たいのは、キーがカテゴリであり、値が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
.