在Collection Framework
中,我们具有接口List和类AbstractList
:
AbstractList implements List
并ArrayList
扩展AbstractList和implements List
我的问题:为什么ArrayList有该implements List条款?
如果ArrayList extends AbstractList和AbstractList implements List
,我们不能说ArrayList implement List
吗?
是。可以省略。但是,这是一个立即可见List。否则,将需要额外单击代码/文档。我认为这就是原因-清晰。
并补充Joeri Hendrickx
的评论-这是为了展示该ArrayList
工具List
。AbstractList
总体而言,这只是为了方便起见,并减少了List实现之间的代码重复。
问题内容: 实现接口。接口没有方法。当我检查它没有实现接口。 那么,在实现的意义何在? 问题答案: 没有方法的接口在Java中称为标记接口。 根据RandomAccess的JavaDoc: List实现使用的标记接口,指示 它们支持快速(通常为恒定时间)随机访问。 有关更多信息,请检查两个JavaDoc页面。 http://docs.oracle.com/javase/6/docs/api/jav
问题内容: 在Java 实现中基于对象数组。 谁能解释我为什么使用数组而不是数据存储的实现?使用有什么好处? 问题答案: 在Java中,创建通用类型的数组并不容易。 简单的方法不能编译: 替换为,一切都很好(以容器实现中其他地方增加的复杂性为代价)。 有其他方法,但是它们呈现了一组不同的权衡。有关广泛的讨论,请参见如何在Java中创建通用数组?
我现在想要一个数据结构,就像一个有索引的Deque。因此,它应该有O(1)在前面和后面添加和删除元素,以及O(1)基于索引访问元素。这并不难想象一个适合这种情况的设置。 ArrayDeque似乎是一个自然的选择。但是,ArrayDeque不实现List。由于底层数据结构是一个数组,是否有充分的理由不允许索引? 还有,更实用的是,有人知道有哪个图书馆在做我想做的事情吗。据我所知,Apache Com
问题内容: 有谁知道为什么不调用Python的函数,因为已经有一个可以删除并返回最后一个元素(索引为-1)并且语义与该用法一致的原因? 问题答案: 因为“ append”早在想到“ pop”之前就已存在。受Python 0.9.1 支持的list.append于1991年初。通过比较,这是在comp.lang.python上讨论的有关在1997年添加pop的一部分。Guido写道: 为了实现一个堆
问题内容: 为什么下面的代码抛出ConcurrentModificationException?JoshBloch可以避免ConcurrentModificationException。 问题答案: 使用“ for each”循环时,不能在列表上使用remove。相反,您可以使用此方法在迭代器上调用remove: 如果您实际上想用“ 200”代替每个值,或用其他值代替,则建立一个新列表可能更有意义
问题内容: 工具的实现以及扩展。但是在Java文档中,您可以看到AbstractList已经实现了List。那么实现List以及扩展AbstractList是否不是多余的? 我的第二个问题, 请看下面的代码: Arrays类的方法包含其自己的ArrayList实现。但这仅扩展AbstractList而未实现List。但是上面的代码可以编译。 但是将代码修改为以下内容时 我收到一个错误: 这是什么原