2016-05-26 25 views
0

我收集了大量的Hetrogenous Objects。例如遍历java中的Hetrogenous Collection

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种类型的对象,那将会很好。 什么将为此通用解决方案。

+0

请加你迄今为止尝试过的实例? @Amol –

回答

0

他们组上的对象类:

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))

0

集团由类

Map<Class, List<Object>> map = list.stream() 
    .collect(Collectors.groupingBy(o-> o.getClass()));