《疯狂Java讲义精粹》读书笔记14 ------ List集合基础
=============《疯狂Java讲义精粹》读书笔记14 ------ List集合基础================
List集合代表一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引。List集合默认按元素的添加顺序设置元素的索引,第一个索引默认为0,之后的递增。
List集合中的常用操作元素的方法:
· void add(int index, Object element): 将元素element插入到元素的index处;
· boolean addAll(int index, Collection c): 将集合c 所包含的所有元素都插入到List集合的index处
· Object get(int index):返回集合index索引处的元素;
· int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引
· inr lastIndexOf(Object o):返回对象o在List集合中最后一次出现位置的索引
· Object remove(int index):删除并返回index所引处的元素
· Object set(int index, Object element):将index所引处的元素替换成element对象,返回新元素
· List subList(int fromIndex, int toIndex): 返回[fromIndex, toIndex)所有集合元素组成的子集合
List判断两个元素相等只需要通过equals()方法比较返回true即可。
下面程序演示了List集合的这种特性用法:
import java.util.ArrayList;
class A{
public boolean equals(Object obj){
return true;
}
}
public class TestList {
public static void main(String[] args) {
ArrayList as = new ArrayList();
as.add(new String("Cocoon"));
as.add(new String("Fan"));
as.add(new String("cnblogs"));
System.out.println(as);
//删除元素中的对象,将导致删除第一个元素
as.remove(new A());
System.out.println(as);
//再次删除第一个元素
as.remove(new A());
System.out.println(as);
}
}
将会看到如下结果:
[Cocoon, Fan, cnblogs]
[Fan, cnblogs]
[cnblogs]
从上面的结果可以看出,程序试图删除一个A对象,List将会调用该A对象的equals()方法一次与几何元素进行比较,如果该方法返回true则删除该索引对应的元素值。
当List调用set()方法来改变List集合指定索引处的元素时,指定的索引必须是List的有效索引。
List还额外提供了一个listiterator()方法,该方法返回一个ListIterator对象,ListIterator继承了Iterator接口,提供了专门操作List的方法:
· boolean hasPrevious(): 返回该迭代器关联的集合是否还有上一个元素
· Object previous():返回该迭代器的上一个元素
· void add(): 在指定位置插入一个元素
import java.util.ArrayList;
import java.util.ListIterator;
public class TestList {
public static void main(String[] args) {
ArrayList as = new ArrayList();
as.add(new String("Cocoon"));
as.add(new String("Fan"));
as.add(new String("cnblogs"));
//System.out.println(as);
//使用迭代器遍历集合元素
ListIterator lit = as.listIterator();
while(lit.hasNext()){
System.out.println(lit.next());
lit.add("**分隔符**");
}
//反向输出
System.out.println("\n======反向输出======");
while(lit.hasPrevious()){
System.out.println(lit.previous());
}
}
}
输出结果:
Cocoon
Fan
cnblogs
======反向输出======
**分隔符**
cnblogs
**分隔符**
Fan
**分隔符**
Cocoon