一、顺序表简介
-
顺序表中,元素与元素之间处在连续内存空间上
-
java中顺序表的实现:—专门的泛型类ArrayList
-
数组与顺序表的区别:
------数组是一个顺序表的实现(即顺序表往往是基于数组实现的)
------数组支持的操作:取下标+取长度
------ ArrayList支持的操作:取下标+取长度+查找元素下标+插入元素+删除元素…
------java中除了数组,其他东西都无法方括号[]取下标 -
ArrayList支持的核心操作:增删改查
-
ArrayList是实现List接口的类,就是把List中的这些抽象方法一一实现
-
arrayList是可变对象,其中元素可以修改
二、基本操作
1.创建一个ArrayList实例
//ArrayList是一个泛型类,<>中要传入一个泛型参数
ArrayList<String> arrayList=new ArrayList<>();
//直接打印arrayList--->空顺序表--->[]
System.out.println(arrayList);
2.获取ArrayList长度
arrayList.size();
3.往ArrayList中添加元素
//(1)添加至末尾
arrayList.add("c");
//(2)往指定位置添加元素
//方法中第一个参数为插入的位置,第二个参数为插入内容
arrayList.add(0,"java");
4.删除元素
//(1)按位置删除
arrayList.remove(1);
//(2)按值删除,如果有重复,只删除最左边的
//若表为[2,3,4,5],执行arrayList.remove(2),这样是按位置删除
//此时优先匹配到更接近的remove(int index)版本
// arrayList.remove("java");
System.out.println(arrayList);
5.查找元素
//(1)返回i是否有该元素
boolean ret=arrayList.contains("c");
System.out.println(ret);
//(2)查找位置,若不存在,返回-1
int index=arrayList.indexOf("c");
System.out.println(index);
6.获取/修改元素
//getter/setter方法
String elem=arrayList.get(0);
System.out.println(elem);
arrayList.set(0,"c++");
System.out.println(arrayList);
7.遍历操作
//(1)下标遍历
for(int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i));
}
//(2)通过迭代器进行遍历
//迭代器---是一个泛型类,用来遍历集合类
//先通过iterator方法获取到迭代器对象
Iterator<String> iterator=arrayList.iterator();
//再通过while循环来遍历
//获取到当前元素并返回,同时光标指向下一位置
while(iterator.hasNext()){ //()中是判断是否到达末尾,未到达就依次取元素
String e=iterator.next();
System.out.println(e);
}
//(3)直接使用for-each来遍历
for(String e:arrayList){
System.out.println(e);
}
三、顺序表中多态的体现
import java.util.List;
//向上转型
List<String> arrayList=new ArrayList<>();
//以上写法只改一处便可将顺序表改为链表(下面代码不用改)
List<String> arrayList=new LinkedList<>();