Java類集框架(二):List子介面
阿新 • • 發佈:2018-12-08
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關鍵字宣告,即採用了同步操作,具備執行緒安全的特性。