Извините, если на этот вопрос уже был дан ответ, но я еще не нашел хорошего ответа!
У меня есть Set
объектов, которые мне нужно разделить по их базовому типу class
на Set
для каждого (очевидно, это означает, что каждый объект в исходном наборе будет отображаться только в один новых Set
объектов).
Мой текущий подход к этому таков:
public static Map<Class,Set<Foo>> splitByClass(Set<Foo> foos) {
// Create a map for the result
Map<Class,Set<Foo>> FooMap = new HashMap<Class,Set<Foo>>();
for (Foo foo: foos) {
Class type = foo.getClass();
// If a set for this key exists, add the item to that.
if (FooMap.containsKey(type)) {
FooMap.get(type).add(foo);
} else {
// Otherwise make a new set, add the item and the set to the map.
Set<Foo> set = new HashSet<Foo>();
set.add(foo);
FooMap.put(type, set);
}
}
return FooMap;
}
Мой вопрос: Существует ли более общий способ разбиения Set
на подмножества, основанный на некотором методе оценки, например проверке типа класса?