数据结构复习笔记系列1 — ArrayList
Posted Putarmor
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构复习笔记系列1 — ArrayList相关的知识,希望对你有一定的参考价值。
ArrayList称为顺序表,底层基于数组实现;在这个类中元素添加方式有两种,一种是boolean add(E e)默认放在数组最后位置,另外一种是void add(int index, E element),将元素放在指定index位置
1.ArrayList构造方法
1)有参构造方法
调用有参构造方法创建对象时,传入的参数就是底层数组的大小。
2)无参构造方法
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
}
从这个代码可以看出,我们调用了ArrayList的无参构造方法创建了一个list对象,那么底层数组大小是多少呢?
从源码看出,调用无参构造方法后,默认数组大小为0;
当我们调用默认添加元素方式添加第一个元素时,程序运行没有出现超出数组边界异常,可以猜想数组进行了扩容,那么扩容机制是怎样的?接着往下看哈
2.ArrayList扩容
总结:利用无参构造方法创建对象,第一次添加元素时,数组会进行扩容,大小为10;后续进行扩容时,以1.5倍方式进行扩容。
3.ArrayList方法练习
public static void main(String[] args) {
List<Integer> list = new ArrayList<>(); //创建list对象
list.add(1); //添加元素
List<Integer> list1 = new ArrayList<>();
list1.add(2);
list1.add(3);
list1.addAll(list); //添加list对象
System.out.println(list1);
list1.remove(0); //删除0下标元素
System.out.println(list1);
Integer integer = 1; //删除元素1
list1.remove(integer);
System.out.println(list1);
list1.set(0,6);
System.out.println(list1);
list1.add(7);
list1.add(8);
list1.add(9);
list1.add(10);
System.out.println(list1);
List newList = list1.subList(1,3); //截取顺序表,左闭右开
System.out.println(newList);
newList.set(0,6); //修改指定下标值
System.out.println(newList);
System.out.println(list1); //list1中指定下标的值也发生了变化
/**
* 迭代器Iterator使用,打印集合中的元素
*/
Iterator<Integer> iterator = list1.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
代码执行结果:
以上是关于数据结构复习笔记系列1 — ArrayList的主要内容,如果未能解决你的问题,请参考以下文章