<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 集合框架 ## 什么是集合 Java中的集合是工具類,可以存儲任意數量的具有共同屬性的對象。 > 集合類存放于java.util包中。 > 集合類存放的都是對象的引用,而非對象本身,出于表達上的便利,我們稱集合中的對象就是指集合中對象的引用 > 在集合框架中,主要分為 Collection 和 Map 兩大接口。 > 在 Collection 中又分為 List (有序集合) 和 Set (無序集合)。List 和 Set 都是接口。 > 其中Collection存儲的是元素,Map存儲的key-value鍵值對。 > 集合框架存儲的元素可以是不定長的,即可以任意的添加,但是數組在定義的時候就確定了長度。實際開發中,對于同類型數據的結構,一般使用 Collection 結構會較多。 ## Collection ![](https://img.kancloud.cn/57/5a/575a8b4a5f479df91165f236ea99381b_1004x562.png) 在Collection中,根據不同的數據結構是使用方法,分為Set(無序的數據集合,元素不可重復)、Queue(隊列)、List(有序的集合,元素可以重復)。 在Collection中的定義中Interface Collection,是一種泛型結構,意思是在使用Collection定義對象的時候,需要指定存儲的元素數據類型(強調:**在集合中存儲的數據元素必須都是引用數據類型**)。 ### List list中的內容是有序的并且可以重復的,我們也稱之為序列; list可以精確的控制每個元素的插入位置,或者刪除某個位置的元素; > 是實際開發中用的最多的一種數據結構,存儲的單個元素,使用**泛型**去強制約束 List 中存放的是一致的數據類型 > 在List接口中,最常用的實現類為ArrayList和LinkedList,其中ArrayList是運用最多的。 **語法** ~~~ List<E> list = new ArrayList<E>(); ~~~ **插入元素** add() **遍歷元素** * 通過元素索引下標方式 for 循環 * 通過 foreach 循環 * 通過迭代器 Iterator **刪除元素** 如果通過遍歷去查找相關元素進行刪除的時候,不要使用 list.remove(int index) 該方法,因為使用該方法,會動態的直接改變集合的元素結構,導致遍歷的不完整或者有錯誤。要使用迭代器遍歷集合,調用 Iterator.remove() 方法刪除。 ### Set 不詳細闡述,在遍歷的時候不能使用索引方式,只能通過迭代器和 foreach。 ## Map ![](https://img.kancloud.cn/e1/bd/e1bd5e2144e1efcd3111df395aea5eb5_954x491.png) 類似的可以理解給集合元素中的值定義了一個 Key 鍵(遍歷),之后可以通過相關的方法快速的定位到具體的 Value 中。 Map中存儲是key-value鍵值對,在Map接口中,我們主要使用的實現類為HashMap。 在使用HashMap類的時候,插入的順序和最后遍歷出來的順序可以是有差異的,因為本身HashMap結構它是無序的。 通過map.put(key, value)方法進去數據的寫入,同樣的要注意使用泛型。(強調:**Map中的key鍵和value值的數據元素必須都是引用數據類型**)。 * * * **語法** ~~~ Map<k,v> map= new HashMap<k,v>(); ~~~ **獲取某個 key 的 value** Value get(Key) **如何遍歷 Map 結構** 獲取 Map 的 Key 集合,通過遍歷 Key 集合,獲取 Value 值。 1. 獲取 key 集合:map.keySet(); 2. 遍歷 Key 集合:iterator; 3. 獲取 Value 值:get(key); ## 開發注意事項 在實際開發中,List 一般使用 ArrayList 實現類去構建,Map 一般使用 HashMap 實現類去構建。 要掌握對于 List 和 Map 的添加元素、遍歷元素。 要認識集合框架中關于對象在內存中的存儲方法。 ## 本節課的代碼片段 ~~~java public class Students { private String name; private String code; public Students() { } public Students(String code, String name) { this.code = code; this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } @Override public String toString() { return "Students [name=" + this.getName() + ", code=" + this.getCode() + "]"; } } public class Demo { public static void main(String[] args) { Students qdd = new Students("001","仇冬冬"); Students drm = new Students("002","丁潤萌"); Clazz amateur = new Clazz(); amateur.setCode("j01"); amateur.setName("JAVA業余班"); List<Students> stu = new ArrayList<Students>(); //list中使用add()方法,來添加元素 stu.add(qdd); stu.add(drm); //當我們想要在list集合中追加元素的時候,同樣使用add()方法 Students qh = new Students("003","邱晗"); stu.add(qh); /*for(int i = 0; i < stu.size(); i++) { //list集合中,通過索引的方式,來查找集合中的元素get() System.out.println(stu.get(i)); } System.out.println("************"); //通過size()方法查看集合的大小 System.out.println(stu.size()); //所以 list集合中索引的范圍是0~size-1; //這是錯誤的,因為我們的索引超過了,索引的范圍 //stu.get(3); //通過傳入索引來刪除索引對應的元素 stu.remove(0); for(int i = 0; i < stu.size(); i++) { System.out.println(stu.get(i)); } //通過傳入對象來刪除集合中對應的對象 //stu.remove(qdd); //for循環查詢list中的元素 for(int i = 0; i < stu.size(); i++) { System.out.println(stu.get(i)); } System.out.println("-------------------------"); //使用foreach() 查詢list中的元素 for(Students st : stu) { System.out.println(st); } System.out.println("-------------------------"); //創建迭代器 Iterator<Students> it = stu.iterator(); while(it.hasNext()) { //student對象就是我們遍歷出來的集合的對象 Students student = it.next(); System.out.println(student); }*/ //集合中元素的修改 for(int i = 0; i < stu.size(); i++) { Students student = stu.get(i); String name = student.getName(); if(name.equals("邱晗")) { student.setCode("070"); } } for(Students st : stu) { System.out.println(st); } System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"); //如何在list集合中進行循環刪除 /*for(int i = 0; i < stu.size(); i++) { Students student = stu.get(i); System.out.println(student.getName()); String name = student.getName(); if(name.equals("丁潤萌")) { stu.remove(i);//這樣的實現是有問題的 System.out.println(stu.size()); } } for(Students st : stu) { System.out.println(st); }*/ //使用迭代器進行迭代器中的遍歷刪除 Iterator<Students> it = stu.iterator(); while(it.hasNext()) { //student對象就是我們遍歷出來的集合的對象 Students student = it.next(); String name = student.getName(); if(name.equals("丁潤萌")) { it.remove(); } } System.out.println("處理完的結果————————————————————"); Iterator<Students> it2 = stu.iterator(); while(it2.hasNext()) { Students st = it2.next(); System.out.println(st); } } } ~~~ ~~~ public class Demo { public static void main(String[] args) { Students qdd = new Students("001","仇冬冬"); Students drm = new Students("002","丁潤萌"); Students lzj = new Students("003","劉子杰"); //map集合中添加元素的方式 Map<String,Students> map = new HashMap<String,Students>(); map.put("qdd", qdd); map.put("drm", drm); map.put("lzj", lzj); //map集合中元素的查找 System.out.println(map.get("qdd")); System.out.println("***************"); //針對map集合中元素的修改 Students stu = map.get("qdd"); stu.setCode("007"); //遍歷map集合 //第一步:獲取map中的key集合; Set<String> set = map.keySet(); //第二部:迭代key集合 Iterator<String> it = set.iterator(); while(it.hasNext()) { String key = it.next(); System.out.println(key); Students st = map.get(key); System.out.println(st); } Students wc = new Students("004","王晨"); map.put("wc", wc); //刪除元素 map.remove("wc"); //這樣是錯誤的 /*Iterator<String> it1 = set.iterator(); while(it1.hasNext()) { String key = it1.next(); if(key.equals("wc")) { map.remove(key); } } System.out.println(map);*/ } } ~~~ ## 練習 定義一個方法listTest(List\<Integer> al, Interger s),要求返回s在al里面第一次出現的索引,如果s沒有出現返回-1 ~~~java public class Demo { public static int listTest(List<Integer> al, Integer s) { /*int result = al.indexOf(s); return result;*/ for(int i = 0; i < al.size(); i++) { //al.get(i) == s if(al.get(i).equals(s)) { return i; } } return -1; } public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(6); list.add(2); list.add(4); list.add(5); list.add(1); list.add(4); int a = listTest(list,4); System.out.println(a); } } ~~~ 現有一個map集合,如下: ~~~ Map<String,String> map = new HashMap<String,String>(); map.put("001","仇冬冬"); map.put("002","丁潤萌"); map.put("003","劉子杰"); map.put("004","邱晗"); ~~~ 要求: 1. 遍歷集合,并將人名與學號對應的打印出來 2. 向該集合插入一條學號為“005”的王晨的信息 3. 要去移除該map中仇冬冬的信息 4. 將map集合中學號為002的學生姓名改為小丁 ~~~ Map<String,String> map = new HashMap<String,String>(); map.put("001","仇冬冬"); map.put("002","丁潤萌"); map.put("003","劉子杰"); map.put("004","邱晗"); map.put("005", "王晨"); map.remove("001"); map.put("002", "小丁"); Set<String> set = map.keySet(); Iterator<String> it = set.iterator(); while(it.hasNext()) { String key = it.next(); System.out.println("學號:" + key + " 姓名:" + map.get(key)); } ~~~ 有兩個數組,第一個數組內容為:【黑龍江省,浙江省,江西省,廣東省,福建省】,第二個數組的內容為:【哈爾濱,杭州,南昌,廣州,福州】,將第一個數組元素作為key,第二個數組的元素作為value存儲到Map集合中,如【黑龍江=哈爾濱,浙江省=杭州】 ~~~ String[] province = {"黑龍江省","浙江省","江西省","廣東省","福建省"}; String[] city = {"哈爾濱","杭州","南昌","廣州","福州"}; Map<String,String> map = new HashMap<String,String>(); for(int i = 0; i < province.length; i++) { map.put(province[i],city[i]); } System.out.println(map); ~~~ ~~~ List<String> province = new ArrayList<String>(); province.add("黑龍江省"); province.add("福建省"); province.add("浙江省"); province.add("廣東省"); province.add("江西省"); List<String> city = new ArrayList<String>(); city.add("杭州"); city.add("哈爾濱"); city.add("廣州"); city.add("福州"); city.add("南昌"); Map<String,String> map = new HashMap<String,String>(); for(int i = 0; i < province.size(); i++) { String pro = province.get(i); for(int j = 0; j < city.size(); j++) { String ci = city.get(j); if("黑龍江省".equals(pro)) { if("哈爾濱".equals(ci)) { map.put(pro, ci); } else { continue; } } else if("福建省".equals(pro)) { if("福州".equals(ci)) { map.put(pro, ci); } else { continue; } } else if("浙江省".equals(pro)) { if("杭州".equals(ci)) { map.put(pro, ci); } else { continue; } } else if("廣東省".equals(pro)) { if("廣州".equals(ci)) { map.put(pro, ci); } else { continue; } } else if("江西省".equals(pro)) { if("南昌".equals(ci)) { map.put(pro, ci); } else { continue; } } } } System.out.println(map); ~~~
                  <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>

                              哎呀哎呀视频在线观看