List集合

Collection是集合框架的根接口,他的抽象方法被子類子類實現   :

size()長度    isEmpty()判斷是否爲空    clear()清空    contains()包含   addAll()添加集合

add()添加    removve()移除    containsAll()判斷調用的數組是否()包含   iterator()迭代器    retainAll()交集    toArray()轉數組

Collection有兩個分支:(1)List(列表)有索引                                                         List的四個實現類 

                                      (2)Set(集合)不一定有索引                                               ArrayList

                                     List和Set也都是接口                                                             LinkedList

                                                                                                                                   Vector

                                                                                                                                   Stck

   ArrayList 數組結構(查詢快) :

import java.util.*;
class Demo1{
	public static void main(String[]args){
		List al1=new ArrayList();//初始容量爲10,如果超過,自動增加0.5*當前容量
		List al2=new ArrayList(5);//指定初始容量爲5
		al1.add(1);//添加1 可以添加多種類型
		al1.add(0,"x2");//在索引2插入,原本索引2的不會消失,向後移
		System.out.println(al1);//打印結果爲:[x2, 1]
	//可以把一個集合插到另一個集合
		al1.addAll(al2);
		System.out.println(al1);
	//判斷集合中是否包含字符串“123”
		System.out.println(al1.contains("123"));//打印結果爲:false
	//遍歷集合:
		for(int i=0;i<al1.size();i++){//al1.size()集合長度
			System.out.println(al1.get(i));
		}
		
		
	//移除
		al1.remove(1);
		System.out.println(al1);//打印結果爲:[x2]
		//移除指定元素
		al1.remove("x2");//從第一個異常,只移除一個,如果後面還有x2,並不移除
		System.out.println(al1);//打印結果爲:[]
		//移除指定元素所有
		al1.add("x0");
		al1.add("x1");
		al1.add("x2");
		al1.add("x2");
		al2.add("x2");
		al1.removeAll(al2);//這裏引用的是一個對象,並不像往上一樣直接添加字符串“x2”
		System.out.println(al1);//打印結果爲:[x0, x1]
		//保留此列表中指定元素
		List al3=new ArrayList();
		al3.add("x0");
		al1.retainAll(al3);
		System.out.println(al1);//打印結果爲:[x0]
		/*al1.set(0,88)指定元素替換此索引位置
		al1.subList(1,2);取索引1至2的元素(此時是個新列表需要對象接收)*/
	//集合轉數組
		Object[] objArr=al1.toArray();//trimTosize()修改容量
		//數組轉集合,轉的集合和不能再改變長度
		List list=Arrays.asList(objArr);
	}
}

   泛型 java1.5以後出現的新特性(具有安全性,不能亂放類型了)  :

import java.util.*;
class Demo1{
	public static void main(String[]args){
	List<Integer> list1=new ArrayList<Integer>();//只能放(Integer)
	/*同樣也可以自己定義類比如 定義一個動物類以及Dog類並繼承類
	List<Animal> list1=new ArrayList<Animal>();只能存放動物類動物類Dog或派生類*/
	}
}

  LinkedList(鏈結構)增刪快,與ArrayList有許多一樣的使用方法,下列是不一樣  :

import java.util.*;
class Demo1{
	public static void main(String[]args){
	LinkedList<Integer>lis1=new LinkedList<Integer>();//由於他是自有的,父類沒有,所以不能使用多態
	lis1.add(8);
	lis1.add(1);
	lis1.add(2);
	lis1.add(3);
	int i=lis1.element();//檢索但不刪除此列表的頭(第一個元素)
	System.out.println(i);//打印 :8
	/*lis1.get(2);//返回此列表中的指定位置元素
	getFirst()返回第一個元素  getLast()返回最後一個元素
	push(E e)將元素放在第一個 	poll()刪除第一個*/
	
	}
}

    還有許多使用方法可以取API查看                                                

Vector 線程安全的(效率不高,是以效率爲代價達到的線程安全的)不舉例了

高級for遍歷:

for(Object k:lis1){
		System.out.println(k);
	}

迭代遍歷集合:

//迭代遍歷器
		Iterator it=lis1.iterator();
		while(it.hasNext()){//判斷這個迭代器裏面是否有元素
			Object a=it.next();//有就使用next取出
			System.out.println(a);
		}

注意:

(1)集合中可以添加任意類型的數據,因爲add方法的參數是Object類型(在沒有使用泛型的情況下);

(2)當集合中添加基本數據類型時,java編譯器會自動將轉爲對應的封裝類類型;

(3)集合中存放的是所有對象的引用,並不是對象本身,所以集合中的元素也是對對象的引用;

(4)集合類的toString()方法返回由所以元素組成的字符串,如果元素又是一對象,則調用對象的toString()方法;

(5)每次對兩個集合操作時,只有一個集合存放結果,另一個集合的內容不變;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章