为什么只有ArrayList和Vector实现了RandomAccess接口而LinkedList没有?据我所知,RandomAccess实现的类可以更快地检索集合中的元素。
此外,如果我尝试创建一个扩展java.util的自定义类。LinkedList还实现了RandomAccess接口,这是否使自定义类与LinkedList一样,但具有RandomAccess?
下面是实现我在第二点中所述内容的代码:
public class ExtendedLinkedList extends java.util.LinkedList implements java.util.RandomAccess {
public static void main(String[] args){
ExtendedLinkedList ell = new ExtendedLinkedList();
System.out.println(ell instanceof java.util.RandomAccess); // True
System.out.println(ell instanceof java.util.LinkedList); // True
}
}
实现RandomAccess接口并不能使随机访问更快。
事实上,它什么也不做,真的。
它仅作为标记接口存在:它用于标记已经提供高效随机索引访问的列表实现。
换句话说:ArrayList和向量实现随机访问,因为它们提供了高效的随机访问
LinkedList不能实现它,因为它不能提供有效的随机访问(从列表接口访问特定索引可能需要迭代列表的一半)。
如果您扩展了
LinkedList
,那么您不应该实现随机访问
,除非您还将get(int)
的实现更改为高效(此时我想说您可能根本不应该扩展LinkedList
)。
问题内容: 实现接口。接口没有方法。当我检查它没有实现接口。 那么,在实现的意义何在? 问题答案: 没有方法的接口在Java中称为标记接口。 根据RandomAccess的JavaDoc: List实现使用的标记接口,指示 它们支持快速(通常为恒定时间)随机访问。 有关更多信息,请检查两个JavaDoc页面。 http://docs.oracle.com/javase/6/docs/api/jav
本文向大家介绍RandomAccess接口?相关面试题,主要包含被问及RandomAccess接口?时的应答技巧和注意事项,需要的朋友参考一下 查看源码我们发现实际上 接口中什么都没有定义。所以,在我看来 接口不过是一个标识罢了。标识什么? 标识实现这个接口的类具有随机访问功能。 在 )方法中,它要判断传入的list 是否 的实例,如果是,调用方法,如果不是,那么调用方法 实现了 接口, 而 没有
为了防止实现细节泄漏,可以实现,而不是返回,然后需要从接口实现。因此,无论内部数据结构如何管理,对元素的访问都是通过进行的。 对于Java8,可能希望将添加到。(另请参阅《Java8lambdas》一书中关于支持的建议)。虽然添加方法并不困难(我也读过关于为什么Iterable不提供流的问题),但奇怪的是Java没有为添加接口来镜像思想。(好吧,可能有一个不同的名称,因为是为了永远使用CORBA的
我做了一个小系统,它需要一个座位数来填满电影院一定数量的座位(没有排)。现在我做了一个填充座位并返回地图的方法,地图返回在什么位置有一定数量的座位是空闲的(例如3-2意味着从位置3开始有两个相邻的座位)。 这很有效,但如果我说最多有5个座位,而座位5是免费的,那么该方法不会将其返回到地图。 以下是使用的代码: 对象座椅 此方法创建一个LinkedList,并通过giveRandomAvailabi
问题内容: 我刚刚发现Java允许枚举实现接口。有什么好的用例? 问题答案: 枚举不仅仅代表被动集(例如颜色)。他们可以代表与功能更复杂的对象,所以你可能想进一步功能添加到这些是那么-例如,你可能如接口,等等。支持这些和组件。
问题内容: 在Java has 方法中,但是,它仅在诸如或的关联容器中使用。为什么要这样设计?具有方法的界面看起来更优雅。 问题答案: 在我看来,主要的论据是,可以为任何Java对象计算出一个定义明确的默认值,以及一个同样定义明确的。根本没有充分的理由要保留所有对象的该功能,当然也有很多理由 不 保留此功能。因此,这本书毫无疑问。