1. 程式人生 > >JAVA高階基礎(6)---Vector和LinkedList

JAVA高階基礎(6)---Vector和LinkedList

Vector

  1. 是 List 介面一個長度可變的陣列的實現。
  2. 可以儲存null 
  3. 是同步的(是執行緒安全的)

注:更多詳細方法請自行在 API 上查詢

 ArrayList和Vector的區別:是否是同步的

package org.lanqiao.list.demo;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

public class VectorDemo {
	public static void main(String[] args) {
		List  list = new Vector();
		list.add("aa");
		list.add("bb");
		list.add("cc");
		list.add(1);
		Vector v = (Vector)list;
		v.addElement("java");
		v.addElement(null);
		v.addElement(null);
		v.addElement(null);
		v.addElement(null);
		for(int i = 0 ; i < v.size();i++) {
			System.out.println(v.elementAt(i));
			
		}
		Iterator iter = v.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next());
			
		}
		
	}
}

LinkedList

  1. 是List介面的雙向連結串列實現
  2. 允許儲存所有的元素,包括null
  3. 不是同步的

注:更多詳細方法請自行在 API 上查詢

LinkedList包含了棧、佇列、連結串列的所有的操作。

package org.lanqiao.list.demo;

import java.util.LinkedList;
import java.util.List;

public class LinkedListDemo {
	public static void main(String[] args) {
		List  list = new LinkedList();//介面的多型
		/*
		 * 這裡使用的是list介面的引用指向了LinkedList的物件
		 * 這稱為介面的多型
		 * 那麼因此在這裡,我們適應list只能使用已經在List介面中宣告的方法
		 * 而不能使用LinkedList特有的方法
		 * 如果要使用LinkedList特有的方法:
		 * 	直接宣告LinkedList的物件
		 * 	將list進行向下轉型
		 */
		LinkedList  linkedList  = new LinkedList();
		LinkedList list2 = (LinkedList)list;
		linkedList.push(11);
		list2.push("aaa");
		
	}
}

List在實際開發中的使用

1、如何來選擇list介面的不同實現?:

ArrayList和Vector的區別:是否是同步的   

LinkedList 和 ArrayList、Vector的選擇?    

  1. 使用連結串列實現的 LinkedList
  2.  使用陣列實現的 ArrayList、Vector

如果針對資料的操作中,查詢元素用的比較多,用陣列的實現。
如果針對資料的操作中,新增、插入和刪除操作較為頻繁,用連結串列的實現。

2、在List的使用中,是使用介面的多型還是使用其具體的物件?

                               在實際開發中,使用List介面的多型更多。

3、在實際開發中,針對三個實現,如果不開率效能問題。該使用哪一種實現?

                                                             ArrayList       

List 介面的三個典型實現:ArrayList();  Vector(); LinkedList();

①、List list1 = new ArrayList();
底層資料結構是陣列,查詢快,增刪慢;執行緒不安全,效率高
  ②、List list2 = new Vector();
底層資料結構是陣列,查詢快,增刪慢;執行緒安全,效率低,幾乎已經淘汰了這個集合
  ③、List list3 = new LinkedList();
底層資料結構是連結串列,查詢慢,增刪快;執行緒不安全,效率高