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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # 簡介 我們通過查看Map接口描述,發現Map接口下的集合與Collection接口下的集合,它們存儲數據的形式不同。 * Collection中的集合,元素是孤立存在的(理解為單身),向集合中存儲元素采用一個個元素的方式存儲。 * Map中的集合,元素是成對存在的(理解為夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值。 * Collection中的集合稱為單列集合,Map中的集合稱為雙列集合。 * 需要注意的是,Map中的集合不能包含重復的鍵,值可以重復;每個鍵只能對應一個值。 * Map中常用的集合為HashMap集合、LinkedHashMap集合 通過查看Map接口描述,看到Map有多個子類,這里我們主要講解常用的HashMap集合、LinkedHashMap集合。 * HashMap<K,V>:存儲數據采用的哈希表結構,元素的存取順序不能保證一致。由于要保證鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法。 * LinkedHashMap<K,V>:HashMap下有個子類LinkedHashMap,存儲數據采用的哈希表結構+鏈表結構。通過鏈表結構可以保證元素的存取順序一致;通過哈希表結構可以保證的鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法。 * 注意:Map接口中的集合都有兩個泛型變量<K,V>,在使用時,要為兩個泛型變量賦予數據類型。兩個泛型變量<K,V>的數據類型可以相同,也可以不同 ## Map接口中的常用方法 ![](https://box.kancloud.cn/eb6e39a25f9d91509f0d32a1c215e394_1440x296.jpg) * put方法:將指定的鍵與值對應起來,并添加到集合中 - 方法返回值為鍵所對應的值 使用put方法時,若指定的鍵(key)在集合中沒有,則沒有這個鍵對應的值,返回null,并把指定的鍵值添加到集合中; 使用put方法時,若指定的鍵(key)在集合中存在,則返回值為集合中鍵對應的值(該值為替換前的值),并把指定鍵所對應的值,替換成指定的新值。 * get方法:獲取指定鍵(key)所對應的值(value) * remove方法:根據指定的鍵(key)刪除元素,返回被刪除元素的值(value)。 演示 ~~~ //創建Map對象 Map<String, String> map = new HashMap<String,String>(); //給map中添加元素 map.put("星期一", "Monday"); map.put("星期日", "Sunday"); System.out.println(map); // {星期日=Sunday, 星期一=Monday} //當給Map中添加元素,會返回key對應的原來的value值,若key沒有對應的值,返回null System.out.println(map.put("星期一", "Mon")); // Monday System.out.println(map); // {星期日=Sunday, 星期一=Mon} //根據指定的key獲取對應的value String en = map.get("星期日"); System.out.println(en); // Sunday //根據key刪除元素,會返回key對應的value值 String value = map.remove("星期日"); System.out.println(value); // Sunday System.out.println(map); // {星期一=Mon} ~~~ ## Map集合遍歷 鍵找值方式:即通過元素中的鍵,獲取鍵所對應的值 操作步驟與圖解: 1. 獲取Map集合中所有的鍵,由于鍵是唯一的,所以返回一個Set集合存儲所有的鍵 ![](https://box.kancloud.cn/e5f95898cf9612ac0758f0746a4623cf_1118x136.jpg) 2. 遍歷鍵的Set集合,得到每一個鍵 3. 根據鍵,獲取鍵所對應的值 ![](https://box.kancloud.cn/edc4085fd07974b2b4adf4cce693d10e_1374x1216.jpg) 演示 ~~~ //創建Map對象 Map<String, String> map = new HashMap<String,String>(); //給map中添加元素 map.put("鄧超", "孫儷"); map.put("李晨", "范冰冰"); map.put("劉德華", "柳巖"); //獲取Map中的所有key Set<String> keySet = map.keySet(); //遍歷存放所有key的Set集合 Iterator<String> it =keySet.iterator(); while(it.hasNext()){ //得到每一個key String key = it.next(); //通過key獲取對應的value String value = map.get(key); System.out.println(key+"="+value); } ~~~ ## Entry鍵值對對象 在Map類設計時,提供了一個嵌套接口:Entry。Entry將鍵值對的對應關系封裝成了對象。即鍵值對對象,這樣我們在遍歷Map集合時,就可以從每一個鍵值對(Entry)對象中獲取對應的鍵與對應的值。 ![](https://box.kancloud.cn/21b124a6ea45a9c52773299897fe1859_888x304.jpg) * Entry是Map接口中提供的一個靜態內部嵌套接口 ![](https://box.kancloud.cn/710083fa82b79a05df38073410271a6d_866x454.jpg) * getKey()方法:獲取Entry對象中的鍵 * getValue()方法:獲取Entry對象中的值 ![](https://box.kancloud.cn/378d349d7ae2550e7dcd4f6f19b175ee_1442x306.jpg) * entrySet()方法:用于返回Map集合中所有的鍵值對(Entry)對象,以Set集合形式返回。 ### 遍歷 ~~~ //創建Map對象 Map<String, String> map = new HashMap<String,String>(); //給map中添加元素 map.put("鄧超", "孫儷"); map.put("李晨", "范冰冰"); map.put("劉德華", "柳巖"); //獲取Map中的所有key與value的對應關系 Set<Map.Entry<String,String>> entrySet = map.entrySet(); //遍歷Set集合 Iterator<Map.Entry<String,String>> it =entrySet.iterator(); while(it.hasNext()){ //得到每一對對應關系 Map.Entry<String,String> entry = it.next(); //通過每一對對應關系獲取對應的key String key = entry.getKey(); //通過每一對對應關系獲取對應的value String value = entry.getValue(); System.out.println(key+"="+value); } ~~~ 注意:Map集合不能直接使用迭代器或者foreach進行遍歷。但是轉成Set之后就可以使用了。 # 靜態導入 在導包的過程中我們可以直接導入靜態部分,這樣某個類的靜態成員就可以直接使用了。在源碼中經常會出現靜態導入。 靜態導入格式: import static XXX.YYY; 導入后YYY可直接使用。 例如:Map.Entry的訪問,簡化后為Entry ~~~ import static java.util.Map.Entry; public class HashMapTest { public static void main(String[] args) { //1,創建hashmap集合對象。 Map<Student,String> map = new HashMap<Student,String>(); //取出元素。鍵值對方式 //Set<Map.Entry<Student, String>> entrySet = map.entrySet(); Set<Entry<Student, String>> entrySet = map.entrySet(); //for (Map.Entry<Student, String> entry : entrySet) { for (Entry<Student, String> entry : entrySet) { Student key = entry.getKey(); String value = entry.getValue(); System.out.println(key.toString()+"....."+value); } } } ~~~ # 可變參數 在JDK1.5之后,如果我們定義一個方法需要接受多個參數,并且多個參數類型一致,我們可以對其簡化成如下格式: ~~~ 修飾符 返回值類型 方法名(參數類型... 形參名){ } ~~~ 其實這個書寫完全等價與 ~~~ 修飾符 返回值類型 方法名(參數類型[] 形參名){ } ~~~ 只是后面這種定義,在調用時必須傳遞數組,而前者可以直接傳遞數據即可。 ~~~ jdk1.5以后。出現了簡化操作。... 用在參數上,稱之為可變參數。 ~~~ 同樣是代表數組,但是在調用這個帶有可變參數的方法時,不用創建數組(這就是簡單之處),直接將數組中的元素作為實際參數進行傳遞,其實編譯成的class文件,將這些元素先封裝到一個數組中,在進行傳遞。這些動作都在編譯.class文件時,自動完成了。 add方法在同一個類中,只能存在一個。因為會發生調用的不確定性 注意:如果在方法書寫時,這個方法擁有多參數,參數中包含可變參數,可變參數一定要寫在參數列表的末尾位置。 # Collections集合工具類 Collections是集合工具類,用來對集合進行操作。部分方法如下 ![](https://box.kancloud.cn/bddf43ee09ad02bd183057f655b44718_1516x216.jpg) * public static <T> void sort(List<T> list) // 集合元素排序 ~~~ //排序前元素list集合元素 [33,11,77,55] Collections.sort( list ); //排序后元素list集合元素 [11,33,55,77] ~~~ * public static void shuffle(List<?> list) // 集合元素存儲位置打亂 ~~~ //list集合元素 [11,33,55,77] Collections.shuffle( list ); //使用shuffle方法后,集合中的元素為[77,33,11,55],每次執行該方法,集合中存儲的元素位置都會隨機打亂 ~~~ # 集合繼承體系的面向對象思想 ![](https://box.kancloud.cn/8ff7312d599ebcb725de54cab1b244ef_1630x716.jpg)
                  <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>

                              哎呀哎呀视频在线观看