【Java類集】_List介面筆記(執行個體親測)

來源:互聯網
上載者:User

【Java類集】_List介面筆記

本章目標:
掌握List介面與Collection介面的關係
掌握List介面的常用子類:ArrayList、Vector
掌握ArrayList與Vector類的區別

3.具體內容

List是Collection的子介面,List介面可以存放任意資料,而且List介面的內容是允許重複的。
List介面的功能要比Collection介面強大很多,因為大量的擴充了Collection介面的操作。

List介面擴充的方法:

No.    方法                                類型    描述
1    public void add(int index,E element)                普通    在指定位置增加元素
2    public boolean addAll(int index,Collection<? extends E?> c)    普通    在指定位置增加一組元素
3    E get(int index)                        普通    返回指定位置的元素
4    public int indexOf(Object o)                    普通    尋找指定元素的位置
5    public int lastIndexOf(Object o)                普通    從後向前尋找指定元素的位置
6    public ListIterator<E> listIterator()                普通    為ListIterator介面執行個體化
7    public E remove(in index)                    普通    按指定的位置刪除元素
8    public List<E> subList(int fromIndex,int toIndex)        普通    取出集合中的子集合
9    public E set(int index,E element)                普通    替換指定位置的元素

List介面的常用子類——ArrayList

ArrayList是List子類,可以直接通過對象的多態性,為List介面執行個體化
此類的定義如下:

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, CloneAble, Serializable

AbstractList類的定義如下:
    
    public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

如果想要使用介面,則肯定要使用對象的多態性進行執行個體化的操作,那麼對於List介面本身也是一樣的 。
ArrayList的是List中最常用的子類。

import java.util.ArrayList;import java.util.List;public class ArrayListDemo01{    public static void main(String args[]){        List<String> allList = null;        allList = new ArrayList<String>();        allList.add("Hello");        allList.add("World");        System.out.println(allList);    }}

輸出:[Hello, World]
指定位置添加,添加的方法是List介面擴充的方法。

import java.util.ArrayList;import java.util.List;import java.util.Collection;public class ArrayListDemo01{    public static void main(String[] args){        List<String> allList = null;        Collection<String> allCollection = null;        allList = new ArrayList<String>();        allCollection = new ArrayList<String>();        allList.add("Hello");        allList.add(0,"World");        System.out.println(allList);        allCollection.add("LXH");        allCollection.add("www.mldn.cn");        allList.addAll(allCollection);        System.out.println(allList);    }}

輸出:
[World, Hello]
[World, Hello, LXH, www.mldn.cn]

在指定位置上加入一組資料

import java.util.ArrayList;import java.util.List;import java.util.Collection;public class ArrayListDemo01{    public static void main(String[] args){        List<String> allList = null;        Collection<String> allCollection = null;        allList = new ArrayList<String>();        allCollection = new ArrayList<String>();        allList.add("Hello");        allList.add(0,"World");        System.out.println(allList);        allCollection.add("LXH");        allCollection.add("www.mldn.cn");        allList.addAll(allCollection);        allList.addAll(0,allCollection);        System.out.println(allList);    }}

輸出:
[World, Hello]
[LXH, www.mldn.cn, World, Hello, LXH, www.mldn.cn]

既然可以增加資料,那麼就可以刪除資料
List中存在兩種刪除:根據對象內容、根據對象的編號

import java.util.ArrayList;import java.util.List;public class ArrayListDemo02{    public static void main(String args[]){        List<String> allList = null;        allList = new ArrayList<String>();        allList.add("Hello");        allList.add(0,"World");        allList.add("MLDN");        allList.add("www.mldn.cn");        allList.remove(0);        allList.remove("MLDN");        System.out.println(allList);    }}

輸出:
[Hello, www.mldn.cn]

集合中的內容可以添加,可以刪除,那麼實際上最重要的就是輸出。

在List介面中提供了get()方法,利用此方法就可以完成輸出。
通過迴圈完成輸出,迴圈的次數由size()方法取得。

import java.util.ArrayList;import java.util.List;public class ArrayListDemo03{    public static void main(String[] args){        List<String> allList = null;        allList = new ArrayList<String>();        allList.add("Hello");        allList.add("World");        allList.add(0,"Hello");        allList.add("MLDN");        System.out.println("由前向後輸出");        for(int i=0;i<allList.size();i++){            System.out.print(allList.get(i));        }        System.out.println("\n由後向前輸出");        for(int i=allList.size()-1;i>=0;i--){            System.out.print(allList.get(i));        }    }}

輸出:
由前向後輸出
HelloHelloWorldMLDN
由後向前輸出
MLDNWorldHelloHello

此輸出方式是List介面所專屬的,而其它介面是沒有的,尤其是Collection中是沒有根據索引取出內容的操作。

import java.util.ArrayList;import java.util.List;public class ArrayListDemo04{    public static void main(String args[]){        List<String> allList = null;        allList = new ArrayList<String>();        allList.add("Hello");        allList.add("World!");        allList.add("MLDN");        String str[] = allList.toArray(new String[]{});    //指定好類型        System.out.println("預先指定好資料類型");        for(int i=0;i<allList.size();i++){            System.out.print(allList.get(i));        }        System.out.println("\n返回對象數群組類型");        Object obj[] = allList.toArray();        for(int i=0;i<allList.size();i++){            System.out.print((String)allList.get(i));//向下轉型操作        }    }}

輸出:

預先指定好資料類型
HelloWorld!MLDN
返回對象數群組類型
HelloWorld!MLDN

既然已經完成基本的輸出的功能,集合中還有以下幾個操作:
    判斷集合是否為空白:boolean isEmpty()
    截取部分集合:List<E> subList(int fromIndex,int toIndex),List介面擴充
    尋找指定對象是否存在:int indexOf(Object o),如果尋找到則返回位置,否則返回-1
    尋找是否存在:boolean contains(Object o)

import java.util.ArrayList;import java.util.List;public class ArrayListDemo05{    public static void main(String args[]){        List<String> allList = null;        allList = new ArrayList<String>();        System.out.println("集合操作之前先判斷集合是否為空白?"+allList.isEmpty());        allList.add("Hello");        allList.add("World");        allList.add("MLDN");        allList.add("www.mldn.cn");        System.out.println(allList.contains("Hello")?"\"Hello\"字串存在!":"\"Hello\"字串不存在!");        List<String> allSub = allList.subList(2,3);    //字串截取        System.out.println("集合截取:");        for(int i=0;i<allSub.size();i++){            System.out.println(allSub.get(i)+"、");                }        System.out.println("MLDN字串的位置:"+allList.indexOf("MLDN"));        System.out.println("集合操作之後集合是否為空白?"+allList.isEmpty());    }        }

輸出:
集合操作之前先判斷集合是否為空白?true
"Hello"字串存在!
集合截取:
MLDN、
MLDN字串的位置:2
集合操作之後集合是否為空白?false

以上的操作都是使用ArrayList子類完成的。

挽救的子類Vector

考慮到大部分的人已經習慣了使用Vector類,所以JAVA的設計者,就讓Vector類多實現了一個List介面,這才將其儲存下來。但是因為其是List子類,所以Vector類的使用之ArrayList沒有太大區別

Vector定義格式:
public class Vector<E> extends AbstratList<E> implements List<E>, RanddomAccess,Cloneable,Serializable

但是,雖然Vector類是舊的類,但是因為讓其實現了List的介面,所以對於程式來講是一樣的。

import java.util.Vector;import java.util.List;public class VectorListDemo01{    public static void main(String args[]){        List<String> allList = null;        allList = new ArrayList<String>();        allList.add("Hello");        allList.add("World");        for(int i=0;i<allSub.size();i++){            System.out.println(allSub.get(i)+"、");                }    }}

輸出:

Hello、
World、

在此類中也提供了重複的方法:
public void addElement(E obj)此方法與add()方法是一致的。

import java.util.Vector;import java.util.List;public class VectorListDemo02{    public static void main(String args[]){        Vector<String> allList = null;        allList = new Vector<String>();        allList.addElement("Hello");        allList.addElement("World");        for(int i=0;i<allList.size();i++){            System.out.println(allList.get(i)+"、");                }    }}

子類的差異:ArrayList與VectorList的區別

No.    比較點        ArrayList                VectorList
1    推出時間    JDK1.2之後推出的,屬於新的操作類    JDK1.0時推出的,屬於舊的操作類
2    效能        採用非同步處理方式,效能更高        採用同步處理方式,效能較低
3    安全執行緒    屬於非安全執行緒操作類            屬於安全執行緒操作類
4    輸出        只能使用Iterator、 foreach輸出        可以使用Iterator、foreach、Enumeration輸出

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.