互联网公司网站建设ppt模板,wordpress模板淘客,app开发公司被骗报警,广州网站定制开发公司哪家好文章目录1.特点2. 练习:ArrayList测试3.ArrayList扩容1.特点
存在java.util包中内部是用数组结构存放数据,封装数组的操作,每个对象都有下标内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长查询快,增删数据效率会低 2. 练习:ArrayList测试
package partThree;import… 文章目录1.特点2. 练习:ArrayList测试3.ArrayList扩容1.特点
存在java.util包中内部是用数组结构存放数据,封装数组的操作,每个对象都有下标内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长查询快,增删数据效率会低 2. 练习:ArrayList测试
package partThree;import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;/**本类用于ArrayList相关测试*/
public class TestArrayList {public static void main(String[] args) {//1.创建对应的集合对象/**底层会自动帮我们创建数组来存放对象并且数组的初始容量是10*/ArrayListInteger list new ArrayList();//2.向集合中添加元素用于测试list.add(100);list.add(200);list.add(300);list.add(400);list.add(400);list.add(300);System.out.println(list); //打印查看集合中的元素//3.测试常用方法//list.clear(); //清空集合System.out.println(list.contains(100));//false 因为这个100是字符串System.out.println(list.get(0));//100,根据下标获取元素System.out.println(list.indexOf(400));//3判断指定元素第一次出现的位置System.out.println(list.lastIndexOf(400));//4判断指定元素最后一次出现的位置System.out.println(list.remove(0)); //删除集合中0号索引处的元素//System.out.println(list.remove(300));/**上面的代码会报错数组下标越界index:300 size:5* 数组中传入的是integer,是引用类型不是基本类型输入300默认为元素位置* 主要是因为List中有两个重载的remove(),如果传入的是300* 会认为是int类型的index索引所以如果想指定元素删除数据* 需要把int类型的300手动装箱成Integer类型*/System.out.println(list.remove(Integer.valueOf(300)));System.out.println(list);System.out.println(list.size());//获取集合中元素的个数System.out.println(list.set(0,77));//修改指定位置的值//4. 迭代集合//4.1 使用for循环System.out.println(------------方式1-------------);for (int i0; ilist.size(); i){//循环集合System.out.println(list.get(i));//根据本轮循环到的索引获取集合中对应的元素}//4.2 使用高效循环System.out.println(------------方式2-------------);for(Integer num :list){//for(元素类型 元素名 要遍历的集合名){循环体}System.out.println(num); //打印每轮遍历到的元素}//4.3 使用 IteratorSystem.out.println(------------方式3-------------);IteratorInteger it list.iterator();//获取迭代器对象//循环迭代集合中的所有元素while(it.hasNext()){//判断是否有下一个元素可迭代如果有继续循环System.out.println(it.next());//打印本轮迭代到的元素}//4.4 使用 ListIteratorSystem.out.println(------------方式4-------------);ListIteratorInteger it2 list.listIterator(); //获取迭代器对象//循环迭代集合中的所有元素while(it2.hasNext()){//判断是否有下一个元素可迭代如果有继续循环System.out.println(it2.next());//打印本轮迭代到的元素}}
}我们集合中存入的类型是引用类型不是基本类型 如果想根据元素删除数据需要把int类型参数转为集合中的元素类型integer
3.ArrayList扩容
ArrayList相当于在没指定initialCapacity时就是会使用延迟分配对象数组空间当第一次插入元素时才分配10默认个对象空间。假如有20个数据需要添加那么会分别在第一次的时候将ArrayList的容量变为10之后扩容会按照1.5倍增长。也就是当添加第11个数据的时候Arraylist继续扩容变为10*1.515当添加第16个数据时继续扩容变为15 * 1.5 22个 ArrayList没有对外暴露其容量个数查看源码我们可以知道实际其值存放在elementData对象数组中那我们只需拿到这个数组的长度观察其值变化了几次就知道其扩容了多少次。怎么获取呢只能用反射技术了。