1. 程式人生 > >Java類集 _List介面

Java類集 _List介面

1、掌握 List 介面與Collection 介面的關係

2、掌握 List 介面的常用子類:ArrayList 、Vector

3、掌握 ArrayList 與 Vector 類的區別

具體內容

Collection 下分為很多的子介面,其中有一個 List 介面, List 介面中可以存放任意的資料。 而且在 List 介面中內容是允許重複的。

List 介面的功能要比 Collection 介面強大很多,因為大量的擴充了 Collection 介面的操作。



如果要想使用介面,則肯定要使用物件的多型性進行例項化的操作,那麼對於 List 介面本身也是一樣的。

ArrayList 是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 ;
		allList = new ArrayList<String>() ;	// 指定操作的泛型為String
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		System.out.println(allList) ;
	}
};
指定位置新增,新增的方法是 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>() ;	// 指定操作的泛型為String
		allCollection = new ArrayList<String>() ;	// 指定一個集合
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		System.out.println(allList) ;
		allCollection.add("LXH") ;	// 向Collection中加入內容
		allCollection.add("www.mldn.cn") ;
		allList.addAll(allCollection) ;
		System.out.println(allList) ;
	}
};
在指定位置上加入一組資料
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>() ;	// 指定操作的泛型為String
		allCollection = new ArrayList<String>() ;	// 指定一個集合
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		System.out.println(allList) ;
		allCollection.add("LXH") ;	// 向Collection中加入內容
		allCollection.add("www.mldn.cn") ;
		allList.addAll(allCollection) ;
		allList.addAll(0,allCollection) ;//指定位置上加入一組資料
		System.out.println(allList) ;
	}
};
既然可以增加資料,那麼就可以刪除資料:

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>() ;	// 指定操作的泛型為String
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		allList.add("MLDN") ;	// 向Collection中加入內容
		allList.add("www.mldn.cn") ;
		allList.remove(0) ; // 刪除第一個元素,指定刪除的位置
		allList.remove("Hello") ;	// 此方法由Collection介面繼承而來
		System.out.println(allList) ;
	}
};
集合中的內容可以新增,可以刪除,那麼實際上最重要的就是輸出。

在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>() ;	// 指定操作的泛型為String
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		allList.add("MLDN") ;	// 向Collection中加入內容
		allList.add("www.mldn.cn") ;
		System.out.print("由前向後輸出:") ;
		for(int i=0;i<allList.size();i++){
			System.out.print(allList.get(i) + "、") ;
		}
		System.out.print("\n由後向前輸出:") ;
		for(int i=allList.size()-1;i>=0;i--){
			System.out.print(allList.get(i) + "、") ;
		}
	}
};
此輸出方式是 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>() ;	// 指定操作的泛型為String
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		allList.add("MLDN") ;	// 向Collection中加入內容
		allList.add("www.mldn.cn") ;
		String str[] = allList.toArray(new String[]{}) ;	// 指定好型別
		System.out.print("指定陣列型別:") ;
		for(int i=0;i<str.length;i++){
			System.out.print(str[i] + "、") ;
		}
		System.out.print("\n返回物件陣列:") ;
		Object obj [] = allList.toArray() ;	// 返回Object型別
		for(int i=0;i<obj.length;i++){
			String temp = (String)obj[i] ;	// 進行向下轉型
			System.out.print(temp + "、") ;
		}
	}
};
既然已經完成基本的輸出的功能,集合中還有以下的幾個操作:

判斷集合是否為空: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>() ;	// 指定操作的泛型為String
		System.out.println("集合操作前是否為空?" + allList.isEmpty()) ;
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		allList.add("MLDN") ;	// 向Collection中加入內容
		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.print(allSub.get(i) + "、") ;
		}
		System.out.println("MLDN字串的位置:" + allList.indexOf("MLDN")) ;
		System.out.println("集合操作後是否為空?" + allList.isEmpty()) ;
	}
};
以上的操作都是使用ArrayList 子類完成的。

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

import java.util.Vector ;
import java.util.List ;
public class VectorDemo01{
	public static void main(String args[]){
		List<String> allList = null ;
		allList = new Vector<String>() ;	// 指定操作的泛型為String
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add("Hello") ;	// 此方法由Collection介面而來
		allList.add(0,"World") ;	// 在第一個位置上新增新的內容
		allList.add("MLDN") ;	// 向Collection中加入內容
		allList.add("www.mldn.cn") ;
		for(int i=0;i<allList.size();i++){
			System.out.print(allList.get(i) + "、") ;
		}
	}
};
因為Vector 類本身屬於舊的類,所以在類中也香袋了很多重複的方法。

增加元素:pbulic void addElement(E obj) -->此方法是最早的增加元素的操作,之後此方法的功能與add() 方法一致的。

import java.util.Vector ;
import java.util.List ;
public class VectorDemo02{
	public static void main(String args[]){
		Vector<String> allList = null ;
		allList = new Vector<String>() ;	// 指定操作的泛型為String
		allList.addElement("Hello") ;	// 此方法由Collection介面而來
		allList.addElement("MLDN") ;	// 向Collection中加入內容
		allList.addElement("www.mldn.cn") ;
		for(int i=0;i<allList.size();i++){
			System.out.print(allList.get(i) + "、") ;
		}
	}
};

總結:

1、掌握了以上的操作方法,實際上List 介面的作用就明白了,而且之後的全部類集操作中也基本上都是以這些方法為操作的標準,只是各個的特性不一樣,例如:List 中允許有重複元素。

2、ArrayList 和 Vector 類的區別