我有一个集合,其中包含大量的、Hetrogenous、。例如:
Employee e1, e2, e3 = new Employee();
Student s1, s2, s3 = new Student();
Department d1, d2, d3 = new Department();
........etc 我需要遍历这个集合,所有类似的对象都需要组合在一起,并放入另一个新的集合。意思是我们可以把e1, e2, e3放在一个集合里。我们可以使用InstanceOf,但是如果只有2-3种类型的对象,那就很好了。什么是通用的解决方案。
发布于 2016-05-26 08:03:15
对对象的类进行分组:
Map<Class<?>, Set<Object>> map = new HashMap<>();
for (Object obj : collection) {
map.computeIfAbsent(obj.getClass(), (k) -> new HashSet<Object>())
.add(obj);
}得到的映射将包含一组具有相同类的对象。
如果您有子类(例如class SubStudent extends Student),这些类将与其父类分开;如果这并不完全是所需的,则可以返回并将map.get(SubStudent.class)与map.get(Student.class)合并,例如map.get(Student.class).addAll(map.remove(SubStudent.class))。
发布于 2016-05-26 08:09:12
按类的实例分组。
Map<Class, List<Object>> map = list.stream()
.collect(Collectors.groupingBy(o-> o.getClass()));https://stackoverflow.com/questions/37454892
复制相似问题