一、特点
List集合中存放的元素有存入先后顺序,可重复。相当于一个只存放对象元素的,容量可扩展的数组。
二、同Collection比较新增的方法
新增的方法都来源于脚标,能精确定位到已存在List集合中的某一个位置。
- 1.1 添加
void add(int index,Object obj)向指定位置添加集合元素
*1. 2 获取
Object get(int index) 返回指定位置的集合元素 - 1.3 删除
Object remove(int index)移除指定位置的元素,并将该元素返回
*1. 4 修改
Object set(int index,Object obj)替换集合中指定位置的元素,并将被 - 替换的元素返回
- 1.5列表迭代器
ListIterator listIterator() List集合特有的迭代器,遍历List的所以元素
ListIterator listIterator(int index) 遍历从index到最后的元素
2 说明
2.1 脚标的范围,add()添加元素时是[0,list.size()],get()获取时范围为[0,list.size()-1],超过范围运行时报下标越界的错(IndexOutOfBoundsException)
2.2 get()和size()联用可以实现List集合的迭代
//创建集合对象
List list = new ArrayList();
//添加对象元素到集合中
list.add("hello");
list.add("java");
list.add("world");
for(int i = 0;i<list.size();i++){
String s = (String)list.get(i);
System.out.println(s);
}
运行结果
hello
java
world
3 ListIterator列表迭代器,一般用来做修改集合元素的遍历
3.1 列表迭代器继承了Iterator接口,所以也拥有hasNext() next()方法,不涉及修改集合元素的遍历不使用列表迭代器,使用Iterator()就可以
3.2 ListIterator接口中新增hasPrevious() ,previous()这2个方法,要使用这2个方法需要先正向遍历,使用场景不多
previous()---返回当前元素,指针移动到前一个元素
hasPrevious()----判断是否还有前一个元素,即指针指向的位置是否还有元素,和hasNext()相反的含义
public static void main(String[] args) {
List list = new ArrayList();
list.add("hello");
list.add("java");
list.add("world");
ListIterator lit = list.listIterator();
while(lit.hasNext()){
String s = (String)lit.next();
System.out.println(s);
}
System.out.println("--------------");
while(lit.hasPrevious()){
String s = (String)lit.previous();
System.out.println(s);
}
}
运行结果
hello
java
world
--------------
world
java
hello
3.3 ListIterator中有 void add(Object o),可以新增集合元素,新增的位置为next()返回值的后面,如果是用普通for循环添加的位置是集合的末尾
public static void main(String[] args) {
List list = new ArrayList();
list.add("hello");
list.add("java");
list.add("world");
for(int i=0;i<list.size();i++){
String s = (String)list.get(i);
if(s.equals("java")){
list.add("javaSE");
}
}
ListIterator lit = list.listIterator();
while(lit.hasNext()){
String s = (String)lit.next();
if(s.equals("java")){
lit.add("Python");
}
}
System.out.println(list);
}
运行结果
[hello, java, Python, world, javaSE]
网友评论