首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中遍历Hetrogenous集合

在java中遍历Hetrogenous集合
EN

Stack Overflow用户
提问于 2016-05-26 07:58:55
回答 2查看 35关注 0票数 0

我有一个集合,其中包含大量的、Hetrogenous、。例如:

代码语言:javascript
复制
    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种类型的对象,那就很好了。什么是通用的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2016-05-26 08:03:15

对对象的类进行分组:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-05-26 08:09:12

按类的实例分组。

代码语言:javascript
复制
Map<Class, List<Object>> map = list.stream()
     .collect(Collectors.groupingBy(o-> o.getClass()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37454892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档