1. 程式人生 > >JAVA類集框架筆記(一)

JAVA類集框架筆記(一)

一、基本概念 :

        1、所謂類集就是一個動態的物件陣列,是對一些實現好的資料結構和演算法進行包裝,方便使用。而且類集框架本身不受物件陣列的長度限制。

        2、為了實現類集容易擴充套件和修改的特性,類集框架被設計成包含了一組標準介面。常用的類集介面是 : Collection 、List 、Set 、Map 、Iterator 、ListIterator 、Enumeration 、SortedSet 、SortedMap 、Queue 、Map.Entry 

        3、Collection介面是集合框架的最大介面,但是如果直接使用Collection介面進行操作的話,則表示的操作意義不明確,因此,在實際開發中不提倡直接使用Collection介面進行開發,而基本上都是使用其子介面 。

 

二、List介面

       如果要使用List介面進行操作,則必須依靠其子類實現物件的例項化,在實際開發中,List子介面有 ArrayList 、 LinkedList 等常用子類 。

(一) ArrayList :

1、使用 ArrayList 實現向集合中增加元素,程式碼如下 :

import java.util.ArrayList ;
import java.util.Collection ;
import java.util.List ;
 
 public class ArrayListDemo{
    public static void main(String[] args){

        List<String> allList = new ArrayList<String>() ;                  //定義並例項化List物件,指定String型別
	Collection<String> allCollection = new ArrayList<String>() ;  //定義並例項化Collection物件,指定String型別

	allList.add("Hello") ;                        //從Collection介面中繼承的方法,向集合中增加資料
	allList.add(0,"World") ;                      //List介面擴充的方法,向集合中指定位置增加資料
	System.out.println(allList) ;                 //輸出集合中的內容

	allCollection.add("abc");                     //增加資料
	allCollection.add("jkl");                     //增加資料

	allList.addAll(allCollection) ;               //從Collection介面中繼承的方法,向集合中增加一組物件
	allList.addAll(0,allCollection) ;             //此方法List自定義,向集合中指定位置增加一組物件
	System.out.println(allList) ;                 //增加物件,呼叫toString()方法

    }
 }

程式執行結果 :

    

2、使用 ArrayList 刪除集合中的元素 ,程式碼如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo02{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定義並例項化List物件,指定String型別
	
	allList.add("Hello") ;                        //從Collection介面中繼承的方法,向集合中增加資料
	allList.add(0,"World") ;                      //List介面擴充的方法,向集合中指定位置增加資料
	allList.add("abc");                           //增加資料
	allList.add("jkl");                           //增加資料

	allList.remove(0) ;                           //刪除指定位置的元素
	allList.remove("Hello") ;                     //刪除指定內容的元素
	System.out.println(allList) ;                 //增加物件,呼叫toString()方法

    }
 }

程式執行結果 :

      

3、使用 size()和get(int index)兩個方法輸出List 集合中的內容 ,程式碼如下 : 

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo03{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定義並例項化List物件,指定String型別
	
	allList.add("Hello") ;                        //從Collection介面中繼承的方法,向集合中增加資料
	allList.add("Hello") ;                        //List介面可以存放重複的內容
	allList.add(0,"World") ;                      //List介面擴充的方法,向集合中指定位置增加資料
	allList.add("abc");                           //增加資料
	allList.add("jkl");                           //增加資料
	
	System.out.print("由前向後輸出:") ;
        for(int i=0;i<allList.size();i++){
	    System.out.print(allList.get(i) +  "、") ;
	}
	System.out.print("\n\n由後向前輸出:") ;
	for(int i=allList.size()-1;i>=0;i--){
	    System.out.print(allList.get(i) +  "、") ;
	}
					 
    }
 }

程式執行結果 :

     

4、使用toArray()方法將集合變為物件陣列 ,程式碼如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo04{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定義並例項化List物件,指定String型別
	
	allList.add("Hello") ;                        //從Collection介面中繼承的方法,向集合中增加資料
	allList.add("Hello") ;                        //List介面可以存放重複的內容
	allList.add(0,"World") ;                      //List介面擴充的方法,向集合中指定位置增加資料
	allList.add("abc");                           //增加資料
	allList.add("jkl");                           //增加資料
	
	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\n返回物件陣列:") ;
	Object obj[] = allList.toArray();
        for(int i=0;i<obj.length;i++){
	    String temp = (String) obj[i];
	    System.out.print(temp +  "、") ;
	}
	
					 
     }
 }

程式執行結果 :

     

5、集合的其它操作

      isEmpty()方法判斷集合是否為空

      contains()方法判斷集合中是否存在指定元素

      subList()方法擷取部分集合內容

      indexOf()方法查詢指定元素的位置

程式碼如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo05{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定義並例項化List物件,指定String型別
	
    System.out.println("集合操作前是否為空?" + allList.isEmpty()) ;

        allList.add("Hello") ;                        //增加資料
	allList.add("World") ;                        //增加資料
	allList.add("abc");                           //增加資料
	allList.add("jkl");                           //增加資料
	allList.add("uio");
	
	System.out.println(allList.contains("Hello")?"\"Hello\"字串存在! ":"\"Hello\"字串不存在! ");

	List<String> allSub = allList.subList(2,4);    //從第二個元素開始擷取,到第四個元素之前停止,擷取第2,3兩個元素
	System.out.print("集合擷取:") ;
        for(int i=0;i<allSub.size();i++){
	    System.out.print(allSub.get(i) + "、") ;
	}
	System.out.println("") ;                   //換行
	System.out.println("abc字串的位置:" + allList.indexOf("abc"));
					 
    }
 }

程式執行結果 :

      

 

(二) 、LinkedList :

           LinkedList表示一個連結串列的操作類,此類雖然實現了List介面,但也同時實現了Queue介面,Queue表示是的佇列操作介面,採用FIFO(First Input First Output)先進先出的方式操作。

1、在連結串列的開頭和結尾增加資料

程式碼如下 :

import java.util.LinkedList;
public class LinkedListDemo01{
    public static void main(String[] args){
	LinkedList<String> link = new LinkedList<String>();
        link.add("A");                          //向連結串列中增加資料
	link.add("B");                          //向連結串列中增加資料
	link.add("C");                          //向連結串列中增加資料
	System.out.println("初始化連結串列 :" + link);     //輸出連結串列內容,呼叫toString()方法
	link.addFirst("X");                     //在連結串列的表頭增加內容
	link.addLast("Y");                      //在連結串列的表尾增加內容
        System.out.println("增加頭和尾之後的連結串列 :" + link);   //輸出連結串列內容,呼叫toString()方法
	} 
} 

程式執行結果 :

    

2、找到連結串列頭

     找到表頭:element()

     找到且不刪除表頭:peek()

     找到並刪除表頭:poll()

程式碼如下 :

import java.util.LinkedList;
public class LinkedListDemo02{
	public static void main(String[] args){
	   LinkedList<String> link = new LinkedList<String>();
	   link.add("A");
	   link.add("B");
	   link.add("C");
	   System.out.println("1-1、element()方法找表頭:" + link.element());
	   System.out.println("1-2、找完之後的連結串列內容:" + link);

	   System.out.println("\n2-1、peek()方法找表頭:" + link.peek());
	   System.out.println("2-2、找完之後的連結串列內容:" + link);

	   System.out.println("\n3-1、poll()方法找表頭:" + link.poll());
	   System.out.println("3-2、找完之後的連結串列內容:" + link);

	}
}

程式執行結果 :