【问题标题】:How to create a custom arraylist with custom methods如何使用自定义方法创建自定义数组列表
【发布时间】:2019-10-21 04:09:07
【问题描述】:

我在一次采访中被问到这个问题。

我们如何创建一个自定义的ArrayList,除了remove、removeAll() 方法之外的所有方法都在ArrayList 中实现?

所以,我的ArrayList 实现一定不能有这两个方法。

我得到的一个解决方案是将我的类扩展到ArrayList 类并实现除remove() 和removeAll() 方法之外的所有方法。

我不确定这是否正确。

【问题讨论】:

  • 澄清一下,我假设您的解决方案是创建一个类(例如MyCustomArrayList)扩展 ArrayList,然后覆盖remove() 和@ 987654332@ 方法是无操作的。 (如果该假设不准确,请纠正我)。如果是这样,那似乎是一个很好的解决方案。您是否在寻找替代解决方案?
  • 这是我想到的解决方案,但是面试官特别希望我的自定义ArrayList不要有这些方法。
  • 是否允许修改ArrayList 类?您是否需要专门对 ArrayList 类进行子类化?
  • 如果您的 type 是 List 或 ArrayList,那么您将拥有 remove 和 removeAll 方法
  • 假设方法根本不存在——并且在调用时不能简单地抛出一些异常——那么唯一的方法是创建你自己的ArrayList,它不实现List(或@987654341 @)。

标签: java oop arraylist


【解决方案1】:

您可以扩展ArrayList 并覆盖指定的方法,例如不支持的方法。他们的实现将抛出UnsupportedOperationException,仅此而已。

class NoRemoveArrayList extends ArrayList {

    @Override
    public Object remove(int i) {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean remove(Object o) {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean removeAll(Collection collection) {
        throw new UnsupportedOperationException();
    }

}

【讨论】:

    【解决方案2】:

    搜索可增长数组(数据结构)。您将获得完整的详细信息以及操作方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      相关资源
      最近更新 更多