精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-25
最后修改:2011-01-25
别想了,看看api就知道了
public static <T> List<T> asList(T... a)返回一个受指定数组支持的固定大小的列表。 既然是固定大小了,自然不能add,那么也自然不能用java.util.ArrayList类的实例. 看看这个静态ArrayList就知道了,它是一个不可变对象,既高效又安全. |
|
返回顶楼 | |
发表时间:2011-01-25
akunamotata 写道 AllenZhang 写道 asList返回的是内部的ArrayList.其和java.util.ArrayList不同。最大的区别就是没有add方法,只能扔exception.
内部ArrayList类,性能并不是最大考虑的,而是在设计的意义上,数组应该是固定大小的。 我赞同,如果光是读的话,性能是一样的。 我也同意这个观点 |
|
返回顶楼 | |
发表时间:2011-01-25
aoliwen521 写道 Turbo 写道 yangyi 写道 没有做Array Copy动作,应该是基于性能的考量
我觉得不是基于性能的考量,留意它的名字,Arrays as List,就是array的本质没有变,只是以List的形式出现,方便使用而已. 同意,觉得这个才是正解。 底层仍然是一个数组,保持数组能拥有的所有操作。 比如修改某一个元素,或者遍历。 但是不能够改变长度。 只是以List形态出现,为了某些仅对List读操作的方法可以顺利的执行。 |
|
返回顶楼 | |
发表时间:2011-01-25
最后修改:2011-01-25
落依然 写道 aoliwen521 写道 Turbo 写道 yangyi 写道 没有做Array Copy动作,应该是基于性能的考量
我觉得不是基于性能的考量,留意它的名字,Arrays as List,就是array的本质没有变,只是以List的形式出现,方便使用而已. 同意,觉得这个才是正解。 底层仍然是一个数组,保持数组能拥有的所有操作。 比如修改某一个元素,或者遍历。 但是不能够改变长度。 只是以List形态出现,为了某些仅对List读操作的方法可以顺利的执行。 为什么要转为List?接口适配 怎么转List?简单高效,不能进行Array Copy 所以: 第一,1是根本目的,没人否认 第二,2是实现方法,快在构造上,不在使用上 第三,本人之前讨论的是为什么没有返回java.util.ArrayList而重新设计了一个List,其他一切讨论都与此无关,典型的无关说法有: a) 读的速度快,写也差不多 —— 俺说的是构造是没有Array Copy是基于性能考虑 b)名字叫asList,所以返回一个List,底层仍然是数组 ——参考第一点 引用 我觉得不是基于性能的考量
这句话要有上下文才能理解,就是什么不是基于性能的考量,asList这个方法的存在本身当然不是基于性能的考量,那是基于需求的考量 |
|
返回顶楼 | |
发表时间:2011-01-26
次“ArrayList”非彼“ArrayList”,一句话足够了
|
|
返回顶楼 | |