看到ArrayList实现了Serializable接口,这意味着ArrayList是可以被序列化的,用transient修饰elementData意味着我不希望elementData数组被序列化。这是为什么?因为序列化ArrayList的时候,ArrayList里面的elementData未必是满的,比方说elementData有10的大小,但是我只用了其中的3个,那么是否有必要序列化整个elementData呢?显然没有这个...
arrayList实现了List接口,底层实现采用了数组,是顺序容器(存的顺序和取出来的顺序是一致的),该容器未实现同步(即线程不安全的容器),这点和vector不同。。每个ArrayList都有一个容量(capacity)默认情况为10,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添加元素时,如果容量不足,容器会自...
使用Comparator 接口 , 对 ArrayList 集合中的元素排序无效 ; 打印之后没有进行排序 ; 错误代码就不贴出来了 , 随便搜索的代码 , 一用就出错 ; Java 1.7 1.7 1.7 及以上的版本中 , Comparator 接口 compare 方法的返回值必须是一对相反的数值 , 如 − 1 -1 −1 和 + 1 +1 +1 ; 不能返回 1...
由上面代码可以得知ArrayList创建对象时为一个长度为10的数组,可以得知,ArrayList为数组结构,初始化长度为10. ArrayList基本方法: add(E) 往数组中增加对象,首先想到的是在已有数组长度加1,但是如果数组长度超出旧数组长度会是上面情况,通过查看源代码可以得知,如果新增加一个对象,数组长度超出原来数组长度,数组将会变成...
indexOf()是在ArrayList中查找某个数据出现的位置索引,如果在ArrayList中没有找到这个数据,就会返回-1
另一个方法就是Vector,它是ArrayList的线程安全版本,其实现90%和ArrayList都完全一样,区别在于: 1、Vector是线程安全的,ArrayList是线程非安全的 2、Vector可以指定增长因子,如果该增长因子指定了,那么扩容的时候会每次新的数组大小会在原数组的大小基础上加上增长因子;如果不指定增长因子,那么就给原数组大小*2,源代...
1. 创建ArrayList 1.1 空参构造ArrayList() 1.2 初始化指定集合大小ArrayList(int initialCapacity) 1.3 初始化传递集合ArrayList(Collection<? extends E> c) 2. 添加元素 2.1 添加到指定位置add(int index, E element) 2.3 添加所有addAll(Collection<? extends E> c) 2.4 添加所有到指定位置addAll(int index...
一. ArrayList 初识 ArrayList是集合的一种实现,实现了接口List,List接口继承了Collection接口。 ArrayList 是java 中最常用的集合类型,这是因为它使用起来非常简单,而且它提供了非常丰富的功能,并且性能非常好,这里需要注意的是性能是以牺牲了线程安全为代价的,ArrayList 好用又很大一部分来自它的动态扩容,不像数组那样...
ArrayList的特点如下: 1)查询快 ArrayList的底层是数组,根据索引查询元素速度很快。 2)增删慢 向数组添加或删除元素后需要移动其它元素位置,所以对于频繁增删的需求不建议使用ArrayList。 3)线程不安全 在多线程章节会讲解线程安全的问题,这里先简单理解为当多线程访问ArrayList 中的元素时会出现数据错乱的问题。
java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此类提供一些方法来操作内部的元素,ArrayList中可以不断添加元素,其大小也自动增长。 数组的长度不可以发生改变,但是ArrayList集合的长度是任意可以改变的 ...