集合架構,

來源:互聯網
上載者:User

集合架構,
一:對象數組的概述

  數組和集合儲存引用資料類型,存的都是地址值

二:集合的由來及集合繼承體系圖

 1.集合的由來 

    數組長度是固定,當添加的元素超過了數組的長度時需要對數組重新定義,太麻煩,java內部給我們提供了集合類,能儲存任意對象,長度是可以改變的,隨著元素的增加而增加,隨著元素的減少而減少
 2.數組和集合的區別
  區別1 :
     數組既可以儲存基礎資料型別 (Elementary Data Type),又可以儲存引用資料類型,基礎資料型別 (Elementary Data Type)儲存的是值,引用資料類型儲存的是地址值
     集合只能儲存引用資料類型(對象)集合中也可以儲存基礎資料型別 (Elementary Data Type),但是在儲存的時候會自動裝箱變成對象
   區別2:
     數組長度是固定的,不能自動成長
       集合的長度的是可變的,可以根據元素的增加而增長
 3.數組和集合什麼時候用
    如果元素個數是固定的推薦用數組
    如果元素個數不是固定的推薦用集合
 4.集合繼承體系圖

    list和set都是介面

三:Collection集合的準系統測試


 1.準系統

  boolean add(E e)

    add方法如果是List集合一直都返回true,因為List集合中是可以儲存重複元素的;如果是Set集合,當儲存重複元素就會返回false.

  boolean remove(Object o)

1 System.out.println(colle.remove(1));//刪除指定元素,可以刪除基礎資料型別 (Elementary Data Type),自動裝箱.2         System.out.println(colle);

  void clear()
  boolean contains(Object o)
  boolean isEmpty()
  int size()

 2.注意:
  collectionXxx.java使用了未經檢查或不安全的操作.
    注意:要瞭解詳細資料,請使用 -Xlint:unchecked重新編譯.
  java編譯器認為該程式存在安全隱患
    溫馨提示:這不是編譯失敗,所以先不用理會,等學了泛型你就知道了

四:集合的遍曆之集合轉數組遍曆

集合的遍曆之集合轉數組遍曆
 1.集合的遍曆
  其實就是依次擷取集合中的每一個元素。
 2.把集合轉成數組,可以實現集合的遍曆

五:Collection集合的帶All功能測試

 1.boolean addAll(Collection c)

  將c中的每一個元素添加到指定引用中,而add(Collection c)直接將c當做一個元素添加到指定引用中

  2.boolean removeAll(Collection c)

   刪除的是交集
  3.boolean containsAll(Collection c)

   判斷調用的集合是否包含傳入的集合
  4.boolean retainAll(Collection c)

   取交集,如果調用的集合發生改變就返回true,否則返回false.

六:集合的遍曆之迭代器遍曆

 1.迭代器的使用

 1         List list = new ArrayList(); 2         Student stu; 3         list.add(new Student("張三", 23)); 4         list.add(new Student("李四", 24)); 5         list.add(new Student("王五", 25)); 6         list.add(new Student("趙六", 26)); 7         Iterator<Student> iter = list.iterator();// 擷取迭代器的引用 8         while (iter.hasNext()) {// 集合中的迭代方法(遍曆) 9             System.out.println(iter.next());10       }

前提是要在Student中要重寫toString方法,否則將會調用Object類中的toString方法

 2.Collection儲存自訂對象並遍曆

1 Collection coll=new ArrayList();2         coll.add(new Student("張三",23));3         coll.add(new Student("李四",24));4         coll.add(new Student("王五",25));5         Iterator iter=coll.iterator();//擷取迭代器6         while(iter.hasNext()){//判斷集合中是否有元素7             Student stu=(Student)iter.next();//向下轉型8             System.out.println(stu.getName()+"....."+stu.getAge());9         }
七:迭代器的原理及源碼解析

 1.迭代器原理
  迭代器原理:迭代器是對集合進行遍曆,而每一個集合內部的儲存結構都是不同的,所以每一個集合存和取都是不一樣,那麼就需要在每一個類中定義hasNext()和next()方法,這樣做是可以的,但是會讓整個集合體系過於臃腫,迭代器是將這樣的方法向上抽取出介面,然後在每個類的內部,定義自己迭代方式,這樣做的好處有二,第一規定了整個集合體系的遍曆方式都是hasNext()和next()方法,第二,代碼有底層內部實現,使用者不用管怎麼實現的,會用即可
 2.迭代器源碼解析
  在eclipse中ctrl + shift + t找到ArrayList類
  ctrl+o尋找iterator()方法
  查看傳回值類型是new Itr(),說明Itr這個類實現Iterator介面
  尋找Itr這個內部類,發現重寫了Iterator中的所有抽象方法

八:List集合的特有功能概述和測試

 1.List集合的特有功能概述
   void add(int index,E element)
   E remove(int index)
   E get(int index)
   E set(int index,E element)

九:List集合儲存學生對象並遍曆
 1      List list = new ArrayList(); 2         Student stu; 3         list.add(new Student("張三", 23)); 4         list.add(new Student("李四", 24)); 5         list.add(new Student("王五", 25)); 6         list.add(new Student("趙六", 26)); 7         Iterator<Student> iter = list.iterator();// 擷取迭代器的引用 8         while (iter.hasNext()) {// 集合中的迭代方法(遍曆) 9             System.out.println(iter.next());10         }11 12         for (int i = 0; i < list.size(); i++) {13             stu = (Student) list.get(i);14             System.out.println(stu.getName() + "..." + stu.getAge());15         }
十:並發修改異常產生的原因及解決方案

  1.需求:我有一個集合,請問,我想判斷裡面有沒有"hello"這個元素,如果有,我就添加一個"world"元素,請寫代碼實現。

 1      List<String> list = new ArrayList<String>(); 2         list.add("a"); 3         list.add("b"); 4         list.add("hello"); 5         list.add("c"); 6         list.add("d"); 7         Iterator<String> iter=list.iterator(); 8         String str; 9         while(iter.hasNext()){10             str=(String)iter.next();11             if("hello".equals(str)){12                 list.add("world");//這裡會拋出ConcurrentModificationException並發修改異常13             }14         }15         System.out.println(list);

 2.ConcurrentModificationException出現
   迭代器遍曆,集合修改集合
 3.解決方案
   a:迭代器迭代元素,迭代器修改元素(ListIterator的特有功能add)
   b:集合遍曆元素,集合修改元素

 1      List<String> list = new ArrayList<String>(); 2         list.add("a"); 3         list.add("b"); 4         list.add("hello"); 5         list.add("c"); 6         list.add("d"); 7         ListIterator<String> iter = list.listIterator();//如果想在遍曆的過程中添加元素,可以用ListIterator 8         while (iter.hasNext()) { 9             String str = (String) iter.next();10             if ("hello".equals(str)) {11                 iter.add("world");12             }13         }14         System.out.println(list);
十一:ListIterator

 1.boolean hasNext()是否有下一個
  2.boolean hasPrevious()是否有前一個
  3.Object next()返回下一個元素
  4.Object previous();返回上一個元素

十二:Vector的特有功能

 1.Vector類特有功能
   public void addElement(E obj)
   public E elementAt(int index)
   public Enumeration elements()
 2.Vector的迭代

 1      Vector<String> vector = new Vector<String>();// 建立集合對象,List的子類 2         vector.add("a"); 3         vector.add("b"); 4         vector.add("hello"); 5         vector.add("c"); 6         vector.add("d"); 7         Enumeration<String> enu = vector.elements();// 擷取枚舉 8         while (enu.hasMoreElements()) {// 判斷集合中是否有元素 9             System.out.println(enu.nextElement());// 擷取集合中的元素10         }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.