List接口继承了Collection接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。
面向位置的操作包括插入某个元素或Collection的功能,还包括获取、除去或更改元素的功能。在List中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置。
void add(int index, Object element) //加到指定位置
boolean addAll(int index, Collection collection)
Object get(int index) //获取指定位置的元素
int indexOf(Object element)
int lastIndexOf(Object element)
Object remove(int index)
Object set(int index, Object element) //替换指定位置的元素
List subList(int fromIndex, int toIndex)
注意:
1)使用List(如ArrayList)时,不会自动调用hashCode()方法。因为在List中,重复了就重复了,不需判断,保证唯一性。
2)List中添加了下标index的功能,这样对List的修改可以利用set方法对指定位置的元素直接进行替换,不需要象Set那么复杂(要转换成数组才能修改,之后还要转换回去)。
3)Collection用Iterator迭代器,而List可以用ListIterator列表迭代器。前者只能next(),后者不但包含next()方法,还包含previous()方法。因此,如果要用List做类似书的翻页功能,不但可以向后翻,还可以向前翻。
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;import org.junit.Test;
/** List在Collection基础上添加了一些“面向位置”的功能--index* add(index)* remove(index)* indexOf(obj)* lastIndexOf(obj)* listIterator * get(index)* */
/** Java中类的系列中名称的命名规范(名称中包含两部分):* 第一部分表示性能(具体实现如算法、存储) : Array, Hash, Tree, Linked* 第二部分表示功能--能做什么如 add(),remove,iterator,是否允许重复,是否有序* * ArrayList,LinkedList,HashSet,TreeSet,HashMap,TreeMap* 以后根据工程需求去选择合适的系列和合适的实现* * 集合一般的功能:* add(),remove(),isEmpty(), size()* contains(), iterator(), toArray(), retainAll()* */public class ListDemo {@Test//面向位置的操作演示public void demo1() {List list = new ArrayList();list.add(100);list.add(0,200);list.add(1,"aa");list.add(2,"bb");list.add(4,3.14); list.remove(new Integer(100));list.remove(1);//面向位置的遍历for(int i=0; i<list.size();i++){Object obj = list.get(i);System.out.println(obj);}}/*List有一个自己特有的迭代器 ListIterator,它不但可以next(),还可以previous()*//** LinkedList相比普通List有一些有关链表的专用操作如:* addFirst(),addLast(),removeFirst(),removeLast() */@Testpublic void demo2() {LinkedList list = new LinkedList();list.add(100);list.add("abc");list.addFirst(200);list.addLast(3.14);for(Object obj:list){System.out.println(obj);}}
}