当前位置: 首页 > 面试题库 >

Java列表与ArrayList

夹谷星河
2023-03-14
问题内容

作为C ++老朋友,我设法解决了我的问题,但是我无法在这里围绕底层的Java机制:

Vector<Object> x = new Vector<Object>();        // OK
ArrayList<Object> y = new ArrayList<Object>();  // OK
List<Object> zzz = new ArrayList<Object>();     // OK solves problem below but question remains
List<Object> z = new List<Object>();            // WHY? Compiler error: Cannot instantiate

问题答案:

List是一个接口,有点像带有= 0C ++中某些方法的类。您无法实例化它。

但是ArrayList<T>“继承” List<T>(或用Java术语实现),因此这些引用是分配兼容的。



 类似资料:
  • 问题内容: 为何以上行失败: 无法实例化类型 但这一项有效: 问题答案: 正确的方法是: 通过其接口()引用对象 使用其具体类型()实例化对象(无法实例化接口)

  • 问题内容: 我在JSF1.2和Richfaces 3.3.2中构建了一个树分页,因为我有很多树节点(大约80k),而且速度很慢。 因此,作为首次尝试,我将创建一个带有页面和页面节点列表的HashMap。 但是,性能还不够好… 所以我想知道是否是比HashMap更快的东西,也许是列表列表之类的东西。 有人对此有经验吗?我能做什么? 提前致谢。 编辑。 最大的问题是,我必须在树的子节点中验证用户的权限

  • 问题内容: 我没有用Java理解Maps。建议何时使用地图而不是列表? 提前致谢, 无人 问题答案: Java映射:将键映射到值的对象。映射不能包含重复的键;每个键最多可以映射到一个值。 Java列表:有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 不同之处在于它们是不同的。映射是键/值的映射,是项列表

  • 问题内容: 我有一个清单: 要从此列表中获取,有两种方法: 1。 2。 我的问题是,哪一个内存效率高且迭代速度快? 问题答案: 他们做同样的事情- 增强的循环对于长版本来说只是语法糖(对于可迭代对象;对于数组,它稍有不同)。除非您明确需要迭代器(例如,调用),否则我将使用第一个版本。 有关编译器执行的准确转换的更多详细信息,请参见Java语言规范的14.14.2节。

  • 问题内容: 好了,所以我知道,并且是接口,但是是什么让的第一行代码的任何好于第二行? 问题答案: 如果你使用第一种形式,则是说你将要使用的只是接口的功能-别无其他,尤其是它的任何实现都没有增加任何额外的内容。这意味着你可以很容易地改变所使用的实现(例如,刚刚替补用于在实例化),而不用担心它打破了代码的其余部分,因为你可能已经使用一些特定的。

  • 问题内容: 我了解使用(1),可以交换List接口的实现。似乎(1)通常在应用程序中使用,而不需要它(我自己总是使用它)。 我想知道是否有人使用(2)? 另外,这种情况实际需要多久(并且我可以举个例子),实际需要使用(1)而不是(2)(即,其中(2)不足以..除了对接口和最佳实践进行编码等之外) 问题答案: 几乎总是首选而不是首选,因为例如,可以将其转换为一个LinkedList而不会影响其余代码