【问题标题】:use a for each in a multiple type arraylist在多类型数组列表中为每个使用 a
【发布时间】:2019-04-14 17:30:17
【问题描述】:

我有一个包含多个实体对象的数组列表,这些实体属于不同类型(因为实体是一个抽象类)。在这个我将调用myEntities 的数组列表中,我有类似[4x Zombies, 5x Plants, 6x Projectiles] 的东西(已洗牌)。所有这些类型都扩展了Entity,但我只想使用for-each 循环来删除僵尸。我怎样才能做到这一点?

PS:我不能用instanceof

【问题讨论】:

  • 欢迎来到 Stack Overflow!您能否分享Minimal, Complete, and Verifiable example,以便我们重现您的问题?
  • "PS:我不能使用 instanceof" 因为你不能使用适合这项工作的工具,这可能是XY problem 的又一个例子。考虑使用edit 选项并添加更多上下文来解释为什么不能使用instanceof
  • BTW foreach(增强的 for 循环)不能/不应该修改它迭代的集合的内容(如果你这样做,你就有可能抛出 ConcurentModificationException)。如果您使用的是 Java 8 或更高版本,则可以使用 yourCollection.removeIf(Predicate)
  • 为什么不能使用instanceof
  • 小幅编辑修正以提高可读性。

标签: java arraylist foreach types


【解决方案1】:

你可以使用这样的结构:

static class foo{

  }

  static class bar{

  }

  public static void main(String[] args) {
    ArrayList<Object> a = new ArrayList<>();
    a.add(new foo());
    a.add(new bar());

    for (Object o: a) {
      if(o.getClass() == foo.class){
        a.remove(o);
      }
    }
  }

希望能解决您的问题。

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多