天天看點

黑馬程式員_集合和數組工具類

---------------------- android教育訓練、 java教育訓練、期待與您交流! ----------------------

       今天已将近集合的尾聲,面對這些接口和接口的實作類,一時半會還不是了解的透徹,每天都跟着老師的步子走,總感覺自己的腿好像受了傷似的,眼看要追到老師了,但還是那麼遠那麼遠,不管怎麼樣還是要堅持,一定要挺到最後。即使片體鱗傷、手足殘缺也要爬到山頂,這樣早晨的陽光總是會先照到你。

還是來回憶一下今天老師到底講了哪些知識吧。在java.util中,提供了兩個工具類來對數組和集合進行操作,分别是Collections和Arrays工具類,我發現了一個問題,好像工具類的名稱後面都是加了s的,但是不知道java包中是不是都是這樣。以後還要多多留意一下後面加s的是不是對操作提供某種功能。

Arrays類是對數組進行操作的,他裡面全部都是靜态方法,常用的包括:

static <T> List<T> asList(T...a):将數組轉換成List集合

static int binarySearch(int[] a,int key):使用二叉樹查找法早找指定元素在數組中的位置

 static int[] copyOf(int[] original,int newLength):指定數組的長度并複制到其他數組

 static int[] copyOfRange(int[] original, int from,int to):複制指定的範圍

 static boolean equals(int[] a,int[] a1):判斷兩個數組是否相等,

 statid void fill(int[] a,int val):将數組中的值變為指定的值,相當于初始化值

 static int hashCode(int[] a):傳回數組的哈希值

 static void sort(int[] a,int fromIndex,int toIndex):指定數組範圍并進行排序

 static <T> String toString(int[]a):将數組轉換成字元串

 static boolean deepEqasls(Object[] al,Object[] a2):判斷兩個對象的深度是否相等

Collections:

static <T extends Comparable<? super T>> void sort(List<T> list) :将集合進行排序,并可以指定集合參數的類型,要繼承comparable接口,

       static void swap(List<?> list, int i, int j) :根據指定的位置交換集合中的元素

       static void shuffle(List<?> list) :對集合中元素位置随機發生變化

static <T> int  binarySearch(List<? extends Comparable<? super T>> list, T key) :使用二分查找給出指定的值在集合中的位置

看看這些常用的方法,省去了我們大部分的時間,如果沒有這些方法,像以前一樣,什麼功能都是自己寫,對于數組的排序、查找等這些功能,隻需要調用就可以了,不管是集合還是數組,他們之間既然存在關系,是否也能對在他們之間互相操作呢。那是當然的了,今天老師講了,我剛才也操作了一遍,可以把一個數組轉換成集合,也可以把集合轉換成數組,但是還要注意一些問題,數組轉集合:可以對數組中的元素通過集合中的方法進行操作,隻要不影響其長度,可以使用集合中的任意方法。集合轉數組:為了限制集合中元素操作,他隻有一個length屬性可以操作,不管是集合轉數組還是數組轉集合,長度是不可以改變的,不能對其進行增删操作。

唉!這個collection和collections看起來是一樣的,難到真表示的是一個意思,不會的了,既然多一個s和少一個s,可能還是有些不同的地方。好,那就來看看到底是哪些地方不同:

collection      collection是所有單列集合中的父接口,是以一組單個對象存儲形式,根據需求,對象在記憶體中存儲資料結構形式不同,collection就産生許多子接口,其中常用的是list接口和set接口,而List有ArrayList和linkedList兩個常用的實作類,它是有序可重複的,set接口有hashset和treeset兩個實作類,是無序不可重複的。

collections    他是對集合操作的一種工具類,類中的方法全部都是靜态的,可以對集合的排序,交換位置,二分查找,元素順序随機變化。等操作。

Jdk5.0為我們提供了一些新特性:今天先來看看這兩個吧:

增強for循環:

也就是foreach語句,他是for(;;;)語句的一種簡寫形式,他也是吧集合或者數組中的元素周遊出來,但是他和for(;;;)還是有些差別,為什麼呢?因為在循環多次的時候,傳統的循環可以對其循環條件的控制,而增強for不能控制,增強for隻能是簡化書寫,周遊集合或數組中的元素,不能直接周遊map集合,但是可以通過把map集合轉成set集合後,再根據set集合疊代出元素。

可變參數:

可變參數的使用格式:

  1.int add(T... a):該函數可以添加多個同種類型的資料,相當于函數的參數是數組形式。

  2.int add(T a,T... a1):在傳參數時,除了第一個為a,其他全部都是屬于可變參數。

  注意:可變參數必須放在其他參數的最後邊。

這些知識點并不少啊,但是還要靈活運用。     

---------------------- android教育訓練、 java教育訓練、期待與您交流! ----------------------詳細請檢視: http://edu.csdn.net/heima

繼續閱讀