List最爲Collection接口的子接口,固然可使用Collection接口裏的所有方法。並且因爲List是有序集合,所以List集合裏增長了一些根據索引來操做集合元素的方法:spa
public class ListTest { public static void main(String[] args) { List names = new ArrayList(); //向names集合中添加三個元素 names.add("lmx"); names.add("wgl"); names.add(new String("孫悟空")); System.out.println(names); //將新字符串對象插入在第二個位置 names.add(1, new String("豬八戒")); //使用for循環遍歷list for(int i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } //刪除第三個元素 names.remove(2); System.out.println(names); //判斷指定元素在List集合中的位置:輸出1,代表位於第二位 System.out.println(names.indexOf(new String("豬八戒"))); //將第二個元素替換成新的字符串對象 names.set(1, new String("沙僧")); System.out.println(names); //將names集合的第二個元素(包括)到第三個元素(不包括)截取成子集合 System.out.println(names.subList(1, 2)); } }
List判斷兩個對象只要經過Equals()方法比較返回true便可,因此若是一個對象重寫了equals()方法且返回值老是true,那麼跟List集合中的元素比較時老是相等。看下面程序:code
class A { public boolean equals(Object obj) { return true; } } public class ListTest2 { public static void main(String[] args) { List names = new ArrayList(); names.add(new String("lmx")); names.add(new String("wgl")); names.add(new String("孫悟空")); System.out.println(names); //刪除集合中的A對象,將致使第一個元素被刪除 names.remove(new A()); System.out.println(names); //刪除集合中的A對象,再次刪除集合中的第一個元素 names.remove(new A()); System.out.println(names); } }
與Set只提供了一個iterator()方法不一樣,List還額外提供了一個listIterator()方法,該方法返回一個ListIterator對象,ListIterator接口繼承了Iterator接口,提供了專門操做List的方法:對象
public class ListIteratorTest { public static void main(String[] args) { String[] names = { "lmx", "wgl" }; List nameList = new ArrayList(); for(int i = 0; i < names.length; i++) { nameList.add(names[i]); } ListIterator lit = nameList.listIterator(); while(lit.hasNext()) { System.out.println(lit.next()); //在指定位置插入一個元素 lit.add("-----分隔符-----"); } System.out.println("=====下面開始反向迭代====="); while(lit.hasPrevious()) {//是否還有上一個元素 System.out.println(lit.previous()); } } }
從上面程序中能夠看出,使用ListIterator迭代List集合時,開始業務要採用正向迭代,即先使用next()方法進行迭代,在迭代過程當中可使用add()方法向上一次迭代元素的後面添加一個新元素。運行上面的程序,看到以下結果:blog
下面代碼使用LinkedList來實現隊列和棧的操做:繼承
public class LinkedListTest { public static void main(String[] args) { LinkedList names = new LinkedList(); //將字符串元素加入隊列的尾部 names.offer("孫悟空"); //將一個字符串元素加入棧的頂部 names.push("wgl"); //將字符串元素添加到隊列的頭部(至關於棧的頂部) names.offerFirst("lmx"); for(int i = 0; i < names.size(); i++) { System.out.println(names.get(i)); } //訪問但不刪除棧頂的元素 System.out.println(names.peekFirst()); //訪問但不刪除隊列的最後一個元素 System.out.println(names.peekLast()); //將棧頂的元素彈出"棧" System.out.println(names.pop()); //下面輸出將看到隊列的第一個元素被刪除 System.out.println(names); //訪問並刪除隊列的最後一個元素 System.out.println(names.pollLast()); //下面輸出將看到隊列中只剩下中間一個元素 System.out.println(names); } }