java基礎--集合Connection/Map

參考文章:http://blog.sina.com.cn/s/blog_9b7559130100z1f4.html html

一:爲何會出現集合框架
        由來:早期是沒有集合框架這一說的,由於當時有數組就能夠了。可是隨着Java的發展與市場的不斷需 數組

        求,就出現了集合框架,好比數組時存儲基本數據類型的,固然也能夠存儲自定義類型,可是其長度必 安全

        須是固定的,查詢刪除修改元素的時候,都必須經過角標。這就很不方便,爲何呢?由於你經過角操 框架

        做數據,那麼你怎麼記着每一個具體元素對應的角標呢?好比一個數組中有{d,b,t,g},等過段時間後, spa

        你怎麼知道t在數組中的那個問題呢?
        因此Java在早期就出現了原始的集合Vector,因爲早期注重的是安全,因此其爲線程安全的。可是隨着 線程

        市場需求的不斷增多,效率就成了社會的主流,這時Vector就不能知足需求,就須要有新的效率高的集 htm

        合來代替。這就出現了集合框架,根據面向對象的思想,不可能讓一個集合具備全部的優勢,由於這不 對象

        現實。 因此就出現了多個不一樣的集合,這些不一樣的集合都有各自的特色,但又有共同的方面,因此爲 blog

        了讓他們有歸宿而且造成體系,就把他們共性的方面給抽取出來,造成他們的父類,讓特徵不一樣的集合 繼承

        繼承,這樣就有了集合框架。
二:集合框架與數組的區別:
      1:最大的區別集合框架存儲的是引用數據類型,不能是基本數據類型
      2:集合的長度是可變的,數組的是不可變的
三:集合框架的體系結構

                                     Collection
   
                      List                Vector              Set

           ArrayList       LinkedList                  HashSet      TreeSet
                           LinkedHashSet
 

四:看體系的方法:
     要看一個體系,首先要看的就是他們的最底層,因此咱們先看框架集合的祖宗Collection。。。。。。

   1:Collection有什麼特色
       規律一:凡是祖宗通常其必爲接口,遺憾的是Collection沒有逃脫這個規律,它也是接口。那麼接下來

               咱們就要看這個接口(對象)
   其特色
        1:長度可變(說明是數組)
        2:元素能夠重複(因此有角標),所以第三點能夠不說
        3:元素有角標
   有哪些行爲呢?
       一個類(對象)中無非要麼是方法(功能),要麼是屬性,要麼是兩者都有。遺憾的是Collection只有

      功能(方法),因此接下來看看它有
   什麼具體方法?
      一個對象所具備的方法不過如下四類:增刪改查
 1:增:
     因此咱們先看Collection的增長的方法,試想若是是本身定義,參數是什麼,返回值是什麼?
     若是是我定義的,確定須要參數,沒有返回值。這是我初次的想法,可是若是添加不成功怎麼辦?因此之

     前的想法是錯的,必須有返回值可是返回值是什麼類型的好呢?試想,若是是int型的,添加成功返回1,

     不成功返回0,這能夠。可是有另外一種更加好的返回類型,boolean型,成功返回true,不成功返回false,

     這也能夠。
     但爲何比int型更好呢?
     由於咱們有時候沒必要寫返回值true與false,好比 return a>b;若是成功,本身就能夠返回true可是若是返

     回的是int型,就需以下
        if(a>b) return 1;
        else 0;
     這樣寫不但代碼繁瑣並且格式不優美,因此其add方法以下
       boolean add(E e);//添加單個元素到集合中
      boolean add(Collection<? extends T> c)//把一個集合中的元素添加到另一個集合中
  2:刪
     刪除集合中的元素:
     覺得Collection補充了數組的不足,刪除元素經過對象,而不是角標返回值爲boolean
     boolean remove(Object o);
     boolean revoveAll(Collection<? extends T> c);//查找並移除集合中相同的元素
     void clear();
  3:查:
     boolean contains(Object o)//元素是否包含在指定集合中
     boolean contionsAll(Collection<? extends T> c);//參數集合是否包含的指定集合中
     boolean isEmpty();//集合是否爲空
     boolean retaionAll(Collection<? extends T> c);//查找並保留相同的元素
  4:取
    如何的把集合中的元素所有的取出來,是很是重要的一個方面,可是Collection也爲咱們提供好了功能
    其參數是什麼呢?由於是取集合自身的元素,因此沒有參數。
    可是返回值類型是什麼呢?
    由於每一個子類的特色不同,因此他們存儲的數據也是不同的,因此致使他們的取出方式更是不同,
    因此返回的應該是怎麼去元素的那個對象,即迭代器Iterator iterator()
  5:其它功能
    因爲數組胡集合有不少的相識型,因此集合就產生一個將集合轉爲數據的方法返回值理應爲Object型的數

    組,不想要參數,由於涉及到的只是本身在轉變,如何轉只有本身知道,因此無參 Object[] toArray();
    可是老是返回Object型的數組老是不舒服的,由於有時候咱們知道具體的返回值類型,因此方法以下
    T[] toArray(T[] a);
   注意:
    在參數中能夠指定數組的長度也能夠不指定,若是指定的數組大小小於集合中的元素個數,則會從新建立一

    個默認的能裝下集合元素的數組     若是指定的數組大了,則多餘的用null填充,     因此最好的是指定一個與集合元素個數相同的數

相關文章
相關標籤/搜索