java中的集合

來源:互聯網
上載者:User

標籤:link   osi   index   優點   迭代   同步   shc   定義   ash   

集合比數組的優勢:

   1.集合可以存任意類型的變數,長度是可變的

   2.數組只能存同一類型的變數,長度是固定的

   3.集合中只能存對象

List集合 : 介面  提供公有的方法

   特有的方法:

    1.List中特有的方法都是通過下標來操作元素的

    尋找:

       add(int index,Object 0)添加元素到指定的位置

       get(int index),擷取集合中指定位置的元素

       Set(int index,object o),用來修飾集合中指定位置的元素的值

迭代器:

     作用:操作集合中的元素,可以(增 , 刪 ,改 ,查)

根迭代器:Iterator   介面  集中擷取迭代器 :  通過集合中的方法擷取迭代器

              collection 集合中擷取迭代器:Iterator();

迭代器中的方法:

    hasNext();//判斷當前指標指向的位置是否有元素

    next();     //擷取當前指標指向的元素,並且指標下移一位

    remove(); //移除最後操作是指標指向的元素

 ListIterator: 中的特有方法:

       hasPrpvious();判斷當前指標指向的上一個位置是否存在元素

       provious();     擷取上一個元素

       proviousIndex();擷取上一個元素所在的位置

       add();在當前指標指向的位置添加一個元素

       set();修改當前指標指向的元素

      1.add和set不能同事使用

      2.如果使用迭代器操作元素,那麼就不要用集合來操作元素

ArratList  : 底層是維護一個Object[] 數組,預設的容量是10,如果容量不夠,增加為原來的1.5倍,

                  優點:尋找塊 ,增刪慢

   trimToSize()。調整集合的容量和資料保持一致

   ensureCapacity(int minCapacity)自訂容量

LinkedList :串連列表實現, 特點:添加元素比較快。尋找慢

LinkedList特有的方法:

   方法介紹: 

     addFirst(E e)

      addLast()

      getLast()

      removeFirst()

      removeLast()

如果集合中沒有元素,擷取或者刪除元素拋:NoSuchElementException:沒有找到元素的異常

   資料結構:

第一個方法  :  List.push(“***”) //往集合的堆棧中推入一個值

         System.out.println("從集合中堆棧中取出值:"+list.pop());  // 狗娃   移除push進去的對象   pop()取棧中最上面的對象

先進先出:

      list.offer(“狗娃”);

      System.out.printn(list.poll());  // 會將元素從集合中移除

擷取逆序的迭代器

     descendingIterator()
          返回以逆向順序在此雙端隊列的元素上進行迭代的迭代器。

     eg:   Iterator it= list.descendingIterator()

              while(it.hasNext){

             System.out.println(it);    反著列印出來

             }

Vector : 描述的是一個安全執行緒的ArrayList 使用和ArrayList一樣   (只需瞭解)

      vector 和 ArrayList 區別

       相同點:   底層都是用object數組來實現的 

       不同點: 

          1.ArrarList是線程不同步,操作效率高,  ArrayList是在jdk1.2出現的

          2.Vector 線程是同步,操作效率低,  是在jdk1.0時候出現的

Set集合:也是一個介面,繼承collection介面,元素是無序的,不能用索引值來取值,不能 重複

hashSet 存值得一個原理:

  首先會調用對象的hashCode方法擷取hashCode值,通過移位等運算擷取一個位置

  情況1:如果位置上是沒有元素,直接將元素存放在該位置上

  情況2:如果位置上已經有了元素,用對象的equals方法和位置上已經存在的對象比較,如果equals返回的是true那就代表是重複對象,就不存在,如果返回的是false將對象和原有的對象存在一起

想要遍曆Set集合:1.將集合變為數組,2.通過迭代器來遍曆(無序:添加的順序和列印出來的順序是不一樣的、)

Treeset:使用元素的自熱順序對元素進行排序,底層使用二叉樹來實現

Treeset使用注意點:

      1.往TreeSet添加對象的時候,如果對象有這個自然排序的特性,就按照這個自然排序進行排序

      2.往TreeSet添加對象的時候,如過對象本身不具備自然排序的特性,啟動並執行時候回報錯,如果需要儲存物件,那麼的對象的類必須要實現CompareTo介面  把元素的比較的規格定義在CompareTo方法中

      3.往TreeSet添加對象的時候,如果對象本身不具備自然排序的特性,並且沒有實現Comparable 介面,那麼這個時候需要建立一個TreeSet的時候傳入一個比較子

        比較子的定義方式:

            class 類名  inplements  Compartor{

              

             }

        4.如果類中實現了Comparable 介面,又在建立Treeset時傳入一個比較子,這個時候以比較子為標準。

 

java中的集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.