<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 集合 ## 集合繼承關系圖 ![](https://box.kancloud.cn/f61c4bc4a47a0efb4a3a25d50dfdfb9d_1492x684.jpg) list叫鏈,set叫集 list允許存儲重復的,set不允許存儲重復的 ## 基本方法 ![](https://box.kancloud.cn/a026b93ddde30a4ea4ca19572eb80cd2_1428x558.jpg) 創建集合的方式 ~~~ 方式一: Collection<元素類型> 變量名=new ArrayList<元素類型>(); 方式二: Collection 變量名=new ArrayList(): ~~~ ## ArrayList和LinkedList的區別 1. ArrayList是實現了基于動態數組的數據結構,而LinkedList是基于鏈表的數據結構; 2. 對于隨機訪問get和set,ArrayList要優于LinkedList,因為LinkedList要移動指針; 3. 對于添加和刪除操作add和remove,一般大家都會說LinkedList要比ArrayList快,因為ArrayList要移動數據。但是實際情況并非這樣,對于添加或刪除,LinkedList和ArrayList并不能明確說明誰快誰慢 ## 長度的3種表現形式 數組.length 屬性 返回int 字符串.length() 方法,返回值int 集合.size() 方法,返回值int # 迭代器 集合中把這種取元素的方式描述在Iterator接口中 ## 常用方法 ![](https://box.kancloud.cn/b145500941f478e67f673398dba2d332_988x218.jpg) ~~~ //for循環迭代寫法: for (Iterator<String> it2 = coll.iterator(); it2.hasNext(); ) { System.out.println(it2.next()); } //存儲時提升了Object。取出時要使用元素的特有內容,必須向下轉型。 Collection coll = new ArrayList(); coll.add("abc"); coll.add("aabbcc"); coll.add("shitcast"); Iterator it = coll.iterator(); while (it.hasNext()) { //由于元素被存放進集合后全部被提升為Object類型 //當需要使用子類對象特有方法時,需要向下轉型 String str = (String) it.next(); System.out.println(str.length()); } ~~~ # 增強for循環 JDK1.5新特性,增強for循環 JDK1.5版本后,出現新的接口java.lang.Iterable Collection是繼承Iterable Iterable作用,實現增強for循環 **弊端:沒有索引,不能操作容器里面的元素** ## 格式 ~~~ for (數據類型 變量名 : 數組或集合) { } ~~~ ~~~ int[] arr={1,2,3,4,5}; for(int i : arr) { System.out.println(i); } ~~~ # 泛型 由于集合中什么類型的元素都可以存儲,導致取出時候,如果出現強轉就會引發運行時錯誤. 解決,使用集合必須明確集合中元素的類型,這種方式稱之為泛型 ![](https://box.kancloud.cn/a2aa86acd7d1fa8112defc6b06c889df_494x370.jpg) ## 泛型的好處 泛型的好處 a:將運行時期的ClassCastException,轉移到了編譯時期變成了編譯失敗。 b:避免了類型強轉的麻煩。 演示下列代碼: ~~~ public class GenericDemo { public static void main(String[] args) { List list = new ArrayList(); list.add(“abc”); list.add(“itcast”); //list.add(5);//當集合明確類型后,存放類型不一致就會編譯報錯 //集合已經明確具體存放的元素類型,那么在使用迭代器的時候,迭代器也同樣會知道具體遍歷元素類型 Iterator<String> it = list.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str.length()); //當使用Iterator<String> //控制元素類型后,就不需要強轉了。獲取到的元素直接就是String類型 } } } ~~~ ## 泛型的通配符 ~~~ / * 泛型的通配符 / public class GenericDemo { public static void main(String[] args) { ArrayList array = new ArrayList(); HashSet<Integer> set = new HashSet<Integer>(); array.add("123"); array.add("456"); set.add(789); set.add(890); iterator(array); iterator(set); } /* * 定義方法,可以同時迭代2個集合 * 參數: 怎么實現 , 不能寫ArrayList,也不能寫HashSet * 參數: 或者共同實現的接口 * 泛型的通配,匹配所有的數據類型 ? */ public static void iterator(Collection<?> coll){ Iterator<?> it = coll.iterator(); while(it.hasNext()){ //it.next()獲取的對象,什么類型 System.out.println(it.next()); } } } ~~~ ## 泛型的限定 ~~~ / * 將的酒店員工,廚師,服務員,經理,分別存儲到3個集合中 * 定義方法,可以同時遍歷3集合,遍歷三個集合的同時,可以調用工作方法 / import java.util.ArrayList; import java.util.Iterator; public class GenericTest { public static void main(String[] args) { //創建3個集合對象 ArrayList cs = new ArrayList(); ArrayList fwy = new ArrayList(); ArrayList jl = new ArrayList(); //每個集合存儲自己的元素 cs.add(new ChuShi("張三", "后廚001")); cs.add(new ChuShi("李四", "后廚002")); fwy.add(new FuWuYuan("翠花", "服務部001")); fwy.add(new FuWuYuan("酸菜", "服務部002")); jl.add(new JingLi("小名", "董事會001", 123456789.32)); jl.add(new JingLi("小強", "董事會002", 123456789.33)); // ArrayList arrayString = new ArrayList(); iterator(jl); iterator(fwy); iterator(cs); } ~~~ ~~~ /* * 定義方法,可以同時遍歷3集合,遍歷三個集合的同時,可以調用工作方法 work * ? 通配符,迭代器it.next()方法取出來的是Object類型,怎么調用work方法 * 強制轉換: it.next()=Object o ==> Employee * 方法參數: 控制,可以傳遞Employee對象,也可以傳遞Employee的子類的對象 * 泛型的限定 本案例,父類固定Employee,但是子類可以無限? * ? extends Employee 限制的是父類, 上限限定, 可以傳遞Employee,傳遞他的子類對象 * ? super Employee 限制的是子類, 下限限定, 可以傳遞Employee,傳遞他的父類對象 */ public static void iterator(ArrayList<? extends Employee> array){ Iterator<? extends Employee> it = array.iterator(); while(it.hasNext()){ //獲取出的next() 數據類型,是什么Employee Employee e = it.next(); e.work(); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看