1. 程式人生 > >Java類集框架(二):List子介面

Java類集框架(二):List子介面

List子介面最大的功能是裡面儲存的資料可以存在重複的內容。List介面在對Collection介面擴充的方法如下:
- public E get(int index):普通,取得索引編號的內容
- public E set(int index, E element):普通,修改指定索引編號的內容
- public ListIterator<E> listIterator():普通,為ListIterator介面例項化

在使用List介面時可以利用ArrayLis或Vector兩個子類來進行介面物件的例項化操作。


ArrayList

簡單操作示例

  • List基本操作
import java.util.ArrayList;
import java.util.List;

/**
 * List基本操作,包括新增元素、獲取容量、判斷是否為空以及迴圈輸出List內容。
 * @author seeker
 *
 */
public class TestArrayList {

    public static void main(String[] args) {
        // 應用泛型保證集合中的所有資料型別都一致
        List<String> all = new ArrayList<>();
        System.out.println("長度: "
+ all.size() + ",是否為空:" + all.isEmpty()); all.add("Hello"); all.add("World"); all.add("Hello"); System.out.println("長度: " + all.size() + ",是否為空:" + all.isEmpty()); for(int i = 0;i < all.size();i++) { String str = all.get(i); System.out.println(str); } } }
  • 在集合中儲存物件
public class Book {

    private String title;
    private double price;

    public Book(String title, double price) {
        this.setTitle(title);
        this.setPrice(price);
    }
    // 省略getter、setter方法
    // 必須覆寫equals()方法,才能呼叫Collection介面中的remove()或contains()方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (!(obj instanceof Book))
            return false;
        Book book = (Book) obj;
        if (this.title.equals(book.title) && this.price == book.price)
            return true;
        return false;
    }

    @Override
    public String toString() {
        return this.title + "--->>" + this.price;
    }

}

import java.util.ArrayList;
import java.util.List;

public class SaveObject {

    public static void main(String[] args) {
        List<Book> all = new ArrayList<>();
        Book book1 = new Book("Gone with the wind",24.99);
        Book book2 = new Book("Harry Potter", 23.88);
        all.add(book1);
        all.add(book2);
        System.out.println(all.contains(book1)); //判斷book1是否在all中
        all.remove(book1);                       //從all中刪除book1
        System.out.println(all);
    }
}

Array與ArrayList的區別

  • Array中儲存的內容時固定的,ArrayList中儲存的內容是可變的。
  • Array中可以儲存任何資料型別的元素,ArrayList只能儲存引用型別,而不能儲存基本資料型別的元素。
  • Array效率相對高一些,進行資料儲存與取得時,ArrayList需要進行一系列的判斷,而Array只需要操作索引。

舊的子類:Vector

Vector類的基本操作方法與ArrayList類相似。最大的區別在於Vector類中的部分方法使用synchronized關鍵字宣告,即採用了同步操作,具備執行緒安全的特性。