欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
目录
两种创建顺序表的方法及区别
认识ArrayList的构造方法
不带参数的构造方法
带参数的构造方法
利用Collection 构造方法
举例
ArrayList 常用方法演示
add
addAll
remove
subList
ArrayList 的遍历方法
for i
for each
使用迭代器
法一:
法二:
倒着打印
两种创建顺序表的方法及区别
//两种创建的顺序表的 类型是不一样的
//arrayList 访问的是当前对象的方法,方法包括了list接口中的方法,
//原因是ArrayList继承了List接口
ArrayList<Integer> arrayList=new ArrayList<>();
//通过list访问的是list接口中的方法
List<Integer> list =new ArrayList<>();
认识ArrayList的构造方法
不带参数的构造方法
elementData只是一个数组
所以这里不带参数的构造方法 并没有给数组分配大小,数组的长度是0。
但是第一次调用add方法时,会给arrayList分配大小为10的内存
带参数的构造方法
初始化指定数组大小
利用Collection 构造方法
利用其他 Collection 构建 ArrayList
举例
例如可以将ArrayLIst的引用 当作参数、原因是ArrayList实现了Collection接口。
ArrayList<Integer> arrayList=new ArrayList<>();
ArrayList<Integer> arrayList1=new ArrayList<>(arrayList);
ArrayList 常用方法演示
add
默认尾插数据
第一次调用add方法时,会给arrayList分配大小为10的内存
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(10);
arrayList.add(20);
addAll
将数据一次性添加
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(10);
arrayList.add(20);
ArrayList<Integer> arrayList1=new ArrayList<>();
//这里是将arrayList中的10和20全部添加到了arrayList1中
arrayList1.addAll(arrayList);//addAll:将数据一次性添加
System.out.println(arrayList1);
结果
remove
通过下标删除元素
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(10);
arrayList.add(11);
arrayList.add(14);
arrayList.add(20);
arrayList.remove(1);//参数是下标
arrayList.remove(Integer.valueOf(10));//通过valueOf找到10并返回他的下标
System.out.println(arrayList);
结果
subList
截取顺序表的值(下标范围是[m,n) ,即从m到n,包含m,但不包含n )
ArrayList<Integer> arrayList=new ArrayList<>();
arrayList.add(10);
arrayList.add(14);
arrayList.add(11);
arrayList.add(20);
arrayList.add(19);
System.out.println(arrayList);
List<Integer> list=arrayList.subList(1,3);//截取下标为[1,3)的值
System.out.println(list);
结果
注意
截取的不是值,是下标的 地址引用,所以改变list的值也会改变arrayList的值
list.set(0,99);
System.out.println(list);
System.out.println(arrayList);
结果
ArrayList 的遍历方法
for i
for (int i = 0; i < arrayList.size(); i++) {
System.out.print(arrayList.get(i)+" ");
}
System.out.println();
for each
for (Integer x:arrayList) {
System.out.print(x+" ");
}
System.out.println();
}
使用迭代器
只要继承了iterable的都可以使用迭代器进行遍历顺序表
法一:
System.out.println("____Iterator_____");
//使用迭代器,遍历顺序表 默认是从0下标开始打印
Iterator<Integer> it= arrayList.iterator();//Iterator是一个接口
while(it.hasNext()){//若下一个数存在,就满足条件
System.out.print(it.next()+" ");//打印下一个
}
System.out.println();
System.out.println("____ListIterator_____");
法二:
//第二种方法
ListIterator<Integer> it2= arrayList.listIterator();//listIterator实现了Iterator接口
while(it.hasNext()){//若下一个数存在,就满足条件
System.out.print(it2.next()+" ");
}
System.out.println();
倒着打印
System.out.println("____ListIterator倒着打印_____");
//第二种方法 倒着遍历
ListIterator<Integer> it3= arrayList.listIterator(arrayList.size());//从arrayList.size(顺序表的末尾)开始遍历
while(it3.hasPrevious()){//若上一个数存在,就满足条件
System.out.print(it3.previous()+" ");
}
System.out.println();