`
Stream2010
  • 浏览: 15567 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

Java中的Arrays.asList(T... a)相关问题

    博客分类:
  • Java
阅读更多

      在《Thinking in Java》中提到使用Arrays.asList(T... a)这个方法生成的List是不能修改其长度的,书中解释说“其底层表示是数组,因此不能调整尺寸”。我觉得这个解释还足以说服我。因为ArrayList的底层也是数组啊,为什么我们可以随便改变它的大小,而通过Arrays.asList(T... a)生成的List就不能改变呢?然后查看ArrayList的源代码,发现ArrayList的长度改变时,其核心就是做一个数组的拷贝操作而已。查看Arrays这个类的源代码:

   这个方法做的操作就是返回一个ArrayList呀!

 public static <T> List<T> asList(T... a) {
       return new ArrayList<T>(a);
  }

 但是仅接着在这个方法的下边它定义了一个静态的内部类,名字就叫ArrayList,上面这个方法使用的就是这个ArrayList

private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable{....}

 

查看了其源代码总算是明白了,ArrayList这个内部类就是以一个固定大小的数组来实现的

虽然明白了为什么我们不能更改其长度,但是一个新的问题又来了:

     为什么不直接使用java.util.ArrayList这个类,而要在内部定义并使用这样一个不可以改变长度的内部的ArrayList呢?

      这个问题我暂时没想明白,希望牛人们能给小弟解释一下。

 

2
0
分享到:
评论
1 楼 Jathon_hs 2011-01-23  
我想可能是翻译的问题,原文中就有fixed-size array一词

相关推荐

Global site tag (gtag.js) - Google Analytics