1. 程式人生 > >實訓17 2018.04.17

實訓17 2018.04.17

結果 mod lec native 就是 image reac 方式 三種

Collection及其部分子類:

技術分享圖片

  List的特點:有索引,有序(按照存入順序進行輸出),可出現重復元素;

  Set的特點:沒有索引,沒有重復元素,不一定有序(HashSet的存儲是無序的,LinkedHashSet的存儲是有序的)。

  List有三種遍歷方式:

    for(int ),foreach,Iterator;

  而Set沒有第一種,因為它沒有索引。

  

Set:

  對於Set作些說明:

    Set的實現類HashSet使用到hashcode()方法。

    hashcode()方法:

      Object中的hashcode()方法:

    技術分享圖片

        用native修飾,沒有給出實現的具體代碼。

      String中的hashcode()方法:

        技術分享圖片

        在代碼中,hash的初始值為0,value是傳入的字符串的字符數組(private final char value[])表示,例如"abc"存入value[]中,那麽value[0]=‘a‘,value[1]=‘b‘,value[2]=‘c‘。經過判斷之後,令val[]=value[],進行循環:h=31*0+97=97,(其中,97是‘a‘的ASCII值);h=31*97+98=3105,(其中,98是‘b‘的ASCII值);h=31*3105+99=96354。這就是“abc”的hashcode()得到的值。

      技術分享圖片

      結果如下:

      技術分享圖片

      HashSet使用數組加鏈表的存儲結果。當使用HashSet存儲時,初始設置數組長度為16。對第一個元素“a”進行添加時,計算“a”的hashcode()值為97,97mod16=1。數組的第一個位置下面鏈接的鏈表中沒有“a”這個值,所以把這個值鏈接在第1個元素下面。

      技術分享圖片

      

      

實訓17 2018.04.17