List集合存放的是有序可重复的对象,List每一个对象都有一个对应的角标,可以通过角标来对集合里的对象进行控制。
List还有一个特点,它下的一个方法listIterator,能够在迭代的时候对集合进行增,删,替换,顺序排序,逆序排序。
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class JiHeDemo{
public static void main(String[] args) {
List l=new ArrayList();
l.add(1745);
l.add(1725);
l.add(1715);
ListIterator li=l.listIterator();
while(li.hasNext()){
Object o=li.next();
if(o.equals(1725)){
li.remove();
}
}
while(li.hasPrevious()){
System.out.println(li.previous());
}
}
}
顺序排序之后,对集合进行修改之后,再次迭代集合只能逆序。
ArrayList底层维护的是一个可变数组,因此存放的对象可以自定义。
需求:去除集合中的重复元素
import java.util.ArrayList;
import java.util.Iterator;
public class JiHeDemo{
public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add("e");
al.add("a");
al.add("b");
al.add("c");
al.add("e");
al.add("e");
al.add("b");
al.add("b");
System.out.println("没有更改前的集合对象"+al);
ArrayList newal=new ArrayList();
for (Iterator iterator = al.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
if(!newal.contains(iterator.next())){
newal.add(iterator.next());
}
}
al.clear();
al.addAll(newal);
System.out.println("删去重复对象后的集合"+al);
}
}
发现一个有意思的事情当定义一个迭代变量时打印出来的不存在a,c对象,不定义迭代变量,程序正常进行,打印正常结果。