高中生,可以选择更好的学校
热门专业

课程预订

姓名:
年龄:
学历:
电话:

QQ:

校验码:

点图更换

 

java软件编程中的两个ArrayList

来源:武汉北大青鸟鲁广校区   发表时间:2014-05-26 11:37

与在线专业老师直接对话交流

  java软件编程中的两个ArrayList

  什么是ArrayList?

  ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。

  java.util.ArrayList

  ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。

  每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造ArrayList时指定其容量。在添加大量元素前,应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。

  ArrayList不是同步的。如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。

  java.util.ArrayList底层的数据保存是通过静态数组来实现的,ArrayList在实例化时会构造一个默认大小10个或者构造函数指定大小的数组,当ArrayList大小变化时,ArrayList底层是通过Arrays.copyOf数组深拷贝实例化一个新的静态数组来完成大小变化的,此操作会占用大量cpu,同时旧的数组占用的内存也需要GC来回收。因此,在向ArrayList增加大量元素操作时,更好先调整好ArrayList到目标大小。

  ArrayList中的操作有:

  set

  add

  addAll

  ensureCapacity(int minCapacity)

  remove(int index)

  remove(Object obj)

  数组扩容通过一个公开的方法ensureCapacity(int minCapacity)来实现。在实际添加大量元素前,我也可以使用ensureCapacity来手动增加ArrayList实例的容量,以减少递增式再分配的数量。数组扩容通过一个公开的方法ensureCapacity(int minCapacity)来实现。在实际添加大量元素前,我也可以使用ensureCapacity来手动增加ArrayList实例的容量,以减少递增式再分配的数量。

  java.util.Arrays$ArrayList

  Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。

  静态数组在使用Arrays.asList()返回的ArrayList就是java.util.Arrays$ArrayList对象,调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。java.util.Arrays$ArrayList继承了静态数组 大小 固定不变的特性。

  • 武汉北大青鸟鲁广校区-安卓课程介绍
  • 武汉北大青鸟鲁广校区-来校路线
  • 武汉北大青鸟鲁广校区-在线咨询

作者: 武汉北大青鸟 原载: 武汉北大青鸟鲁广校区www.027hpit.com
(版权所有,转载时必须以链接形式注明作者和原始出处及本声明)

相关文章

新闻图片

Copyright 2006-2020 版权所有 武汉宏鹏职业培训学校 鄂ICP备11007753号

鄂公网安备 42011102000420号

CacheTime:2017-07-02 14:49:43 CacheID:5905