结合API文档和网上搜索来的ArrayList的特效来总结下:
API文档是如此介绍ArrayList的:
接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)
Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差。
List允许有相同的元素
ArrayList的方法都没有同步,所以在多线程中是不安全的,必须自己同步
toArray()方法返回的是和原列表相同的对象,也就是说:
arrayList.toArray()[0]==arrayList.get(0)返回的是true(假定arrayList不空)。
clone()方法是一个浅拷贝。
API文档:
在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量
可以通过自己调用ensureCapacity()提高效率
创建同步线程的ArrayList
List list = Collections.synchronizedList(new ArrayList(...));
ArrayList提供了4种添加方法:
list.add(e);
list.add(index, element);
list.addAll(c);
list.addAll(index, c);
每次添加都调用ensureCapacity()方法,扩大容量是每次是1.5倍
list.set(index, element);
list.add(index, element);
set是用指定的元素替代此列表中指定位置上的元素
add是将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素
对于新增和删除操作add和remove,ArrayList要移动数据。所以性能不是很好
而访问数据是直接根据数组下标来获得数据的,所以速度很快
移除ArrayList内重复数据:
public static void removeDuplicate(List arlList) {
HashSet h = new HashSet(arlList);
arlList.clear();
arlList.addAll(h);
}
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
分享到:
相关推荐
c#重写ArrayList源代码。 开发语言:C#. 开发思想:oop
希望大家多多支持,此文档为转载的,但是很不错的,忘了出处了,希望原著作者原谅。
使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();
C#160使用对象ArrayList填充DataGrid 源代码
根据arraylist源码分析,自己编写了一个类似于arraylist集合的代码
java下的一个demo,关于arraylist的用法
ArrayList的源码,写了一些自己的分析,包括jdk1.8的新特性
自己写的ArrayList,能实现添加、同级个数、获取值
java的 ArrayList的使用与分析
集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试
Java学生成绩管理系统源代码: imporjava.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io....
vb源代码 关于arraylist相关用法
基于jdk1.8 的ArrayList的源码分析 前言:一说到ArrayList的大家可能立马想到的就是:有序、可重复、查找快但是增删慢、线程不安全。但是具体的原因都不是很清楚,本文就会根据这些问题和大家一起去学习。主要会从...
ArrayList基本功能实现与需求分析,详情代码信息可看博客内容
arrayList排序arrayList排序arrayList排序
NULL 博文链接:https://312256159-qq-com.iteye.com/blog/1594752
ArrayList源码分析_016.pdf
在jni中操作arraylist对象,然后添加一个int型数据进去
对数组和ArrayList的学习总结,详细介绍了数组与ArrylyList的使用