List基本用法

  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);
    }
}
相關文章
相關標籤/搜索