日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

00084_Map接口

發布時間:2024/9/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 00084_Map接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Map接口概述

  通過查看Map接口描述,發現Map接口下的集合與Collection接口下的集合,它們存儲數據的形式不同。

  (1)Collection中的集合,元素是孤立存在的(理解為單身),向集合中存儲元素采用一個個元素的方式存儲;

  (2)Map中的集合,元素是成對存在的(理解為夫妻)。每個元素由鍵與值兩部分組成,通過鍵可以找對所對應的值;

  (3)Collection中的集合稱為單列集合,Map中的集合稱為雙列集合;

  (4)需要注意的是,Map中的集合不能包含重復的鍵,值可以重復;每個鍵只能對應一個值;

  (5)Map中常用的集合為HashMap集合、LinkedHashMap集合。

2、Map接口中常用集合概述

  (1)HashMap<K,V>:存儲數據采用的哈希表結構,元素的存取順序不能保證一致。由于要保證鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法;

  (2)LinkedHashMap<K,V>:HashMap下有個子類LinkedHashMap,存儲數據采用的哈希表結構+鏈表結構。通過鏈表結構可以保證元素的存取順序一致;通過哈希表結構可以保證的鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法;

  (3)Map接口中的集合都有兩個泛型變量<K,V>,在使用時,要為兩個泛型變量賦予數據類型。兩個泛型變量<K,V>的數據類型可以相同,也可以不同。

3、Map接口中的常用方法

  (1)put方法:將指定的鍵與值對應起來,并添加到集合中;

  方法返回值為鍵所對應的值;

  使用put方法時,若指定的鍵(key)在集合中沒有,則沒有這個鍵對應的值,返回null,并把指定的鍵值添加到集合中;

  使用put方法時,若指定的鍵(key)在集合中存在,則返回值為集合中鍵對應的值(該值為替換前的值),并把指定鍵所對應的值,替換成指定的新值。

  (2)get方法:獲取指定鍵(key)所對應的值(value);

  (3)remove方法:根據指定的鍵(key)刪除元素,返回被刪除元素的值(value)。

  (4)Map接口的方法演示:

1 public class MapDemo { 2 public static void main(String[] args) { 3 //創建Map對象 4 Map<String, String> map = new HashMap<String,String>(); 5 //給map中添加元素 6 map.put("星期一", "Monday"); 7 map.put("星期日", "Sunday"); 8 System.out.println(map); // {星期日=Sunday, 星期一=Monday} 9 10 //當給Map中添加元素,會返回key對應的原來的value值,若key沒有對應的值,返回null 11 System.out.println(map.put("星期一", "Mon")); // Monday 12 System.out.println(map); // {星期日=Sunday, 星期一=Mon} 13 14 //根據指定的key獲取對應的value 15 String en = map.get("星期日"); 16 System.out.println(en); // Sunday 17 18 //根據key刪除元素,會返回key對應的value值 19 String value = map.remove("星期日"); 20 System.out.println(value); // Sunday 21 System.out.println(map); // {星期一=Mon} 22 } 23 }

4、Map集合遍歷鍵找值方式

  (1)鍵找值方式:即通過元素中的鍵,獲取鍵所對應的值;

  (2)操作步驟:

  獲取Map集合中所有的鍵,由于鍵是唯一的,所以返回一個Set集合存儲所有的鍵;

  遍歷鍵的Set集合,得到每一個鍵;

  根據鍵,獲取鍵所對應的值。

  (3)代碼演示:

1 public class MapDemo { 2 public static void main(String[] args) { 3 //創建Map對象 4 Map<String, String> map = new HashMap<String,String>(); 5 //給map中添加元素 6 map.put("鄧超", "孫儷"); 7 map.put("李晨", "范冰冰"); 8      map.put("劉德華", "柳巖"); 9 //獲取Map中的所有key 10 Set<String> keySet = map.keySet(); 11 //遍歷存放所有key的Set集合 12 Iterator<String> it =keySet.iterator(); 13 while(it.hasNext()){ 14 //得到每一個key 15 String key = it.next(); 16 //通過key獲取對應的value 17 String value = map.get(key); 18 System.out.println(key+"="+value); 19 } 20 } 21 }

5、Entry鍵值對對象

  (1)在Map類設計時,提供了一個嵌套接口:Entry。Entry將鍵值對的對應關系封裝成了對象。即鍵值對對象,這樣我們在遍歷Map集合時,就可以從每一個鍵值對(Entry)對象中獲取對應的鍵與對應的值;

  (2)接口 Map<K,V>

  Entry是Map接口中提供的一個靜態內部嵌套接口;

  entrySet()方法:用于返回Map集合中所有的鍵值對(Entry)對象,以Set集合形式返回。

  (3)接口 Map.Entry<Entry>

  getKey()方法:獲取Entry對象中的鍵;

  etValue()方法:獲取Entry對象中的值。

6、Map集合遍歷鍵值對方式

  (1)鍵值對方式:即通過集合中每個鍵值對(Entry)對象,獲取鍵值對(Entry)對象中的鍵與值;

  (2)操作步驟:

  獲取Map集合中,所有的鍵值對(Entry)對象,以Set集合形式返回;

  遍歷包含鍵值對(Entry)對象的Set集合,得到每一個鍵值對(Entry)對象;

  通過鍵值對(Entry)對象,獲取Entry對象中的鍵與值。

  (3)代碼演示:

1 public class MapDemo { 2 public static void main(String[] args) { 3 //創建Map對象 4 Map<String, String> map = new HashMap<String,String>(); 5 //給map中添加元素 6 map.put("鄧超", "孫儷"); 7 map.put("李晨", "范冰冰"); 8 map.put("劉德華", "柳巖"); 9 //獲取Map中的所有key與value的對應關系 10 Set<Map.Entry<String,String>> entrySet = map.entrySet(); 11 //遍歷Set集合 12 Iterator<Map.Entry<String,String>> it =entrySet.iterator(); 13 while(it.hasNext()){ 14 //得到每一對對應關系 15 Map.Entry<String,String> entry = it.next(); 16 //通過每一對對應關系獲取對應的key 17 String key = entry.getKey(); 18 //通過每一對對應關系獲取對應的value 19 String value = entry.getValue(); 20 System.out.println(key+"="+value); 21 } 22 } 23 }

  (4)注意:Map集合不能直接使用迭代器或者foreach進行遍歷。但是轉成Set之后就可以使用了。

7、HashMap存儲自定義類型鍵值

  (1)練習:每位學生(姓名,年齡)都有自己的家庭住址。那么,既然有對應關系,則將學生對象和家庭住址存儲到map集合中。學生作為鍵, 家庭住址作為值;注意,學生姓名相同并且年齡相同視為同一名學生。

  (2)學生類

1 public class Student { 2 private String name; 3 private int age; 4 5 //編寫構造方法,這里省略 6 //編寫get,set方法,這里省略 7 //編寫toString方法,這里省略 8 }

  (3)測試類

1 public class HashMapTest { 2 public static void main(String[] args) { 3 //1,創建hashmap集合對象。 4 Map<Student,String> map = new HashMap<Student,String>(); 5 6 //2,添加元素。 7 map.put(new Student("lisi",28), "上海"); 8 map.put(new Student("wangwu",22), "北京"); 9 map.put(new Student("zhaoliu",24), "成都"); 10 map.put(new Student("zhouqi",25), "廣州"); 11 map.put(new Student("wangwu",22), "南京"); 12 13 //3,取出元素。鍵找值方式 14 Set<Student> keySet = map.keySet(); 15 for(Student key : keySet){ 16 String value = map.get(key); 17 System.out.println(key.toString()+"....."+value); 18 } 19 20 //取出元素。鍵值對方式 21 Set<Map.Entry<Student, String>> entrySet = map.entrySet(); 22 for (Map.Entry<Student, String> entry : entrySet) { 23 Student key = entry.getKey(); 24 String value = entry.getValue(); 25 System.out.println(key.toString()+"....."+value); 26 } 27 } 28 }

  (4)當給HashMap中存放自定義對象時,如果自定義對象作為key存在,這時要保證對象唯一,必須復寫對象的hashCode和equals方法;

  (5)如果要保證map中存放的key和取出的順序一致,可以使用LinkedHashMap集合來存放。

8、靜態導入

  (1)在導包的過程中我們可以直接導入靜態部分,這樣某個類的靜態成員就可以直接使用了。在源碼中經常會出現靜態導入;

  (2)靜態導入格式

import static XXX.YYY; 導入后YYY可直接使用。

  (3)例如:Map.Entry的訪問,簡化后為Entry。

1 import static java.util.Map.Entry; 2 public class HashMapTest { 3 public static void main(String[] args) { 4 //1,創建hashmap集合對象。 5 Map<Student,String> map = new HashMap<Student,String>(); 6 7 //取出元素。鍵值對方式 8 //Set<Map.Entry<Student, String>> entrySet = map.entrySet(); 9 Set<Entry<Student, String>> entrySet = map.entrySet(); 10 11 //for (Map.Entry<Student, String> entry : entrySet) { 12 for (Entry<Student, String> entry : entrySet) { 13 Student key = entry.getKey(); 14 String value = entry.getValue(); 15 System.out.println(key.toString()+"....."+value); 16 } 17 } 18 }

9、可變參數

  (1)在JDK1.5之后,如果我們定義一個方法需要接受多個參數,并且多個參數類型一致,我們可以對其簡化成如下格式:

修飾符 返回值類型 方法名(參數類型... 形參名){ }

  (2)jdk1.5以后。出現了簡化操作。... 用在參數上,稱之為可變參數;

  (3)同樣是代表數組,但是在調用這個帶有可變參數的方法時,不用創建數組(這就是簡單之處),直接將數組中的元素作為實際參數進行傳遞,其實編譯成的class文件,將這些元素先封裝到一個數組中,在進行傳遞。這些動作都在編譯.class文件時,自動完成了;

  (4)代碼演示:

1 public class ParamDemo { 2 public static void main(String[] args) { 3 int[] arr = {21,89,32}; 4 int sum = add(arr); 5 System.out.println(sum); 6 sum = add(21,89,32);//可變參數調用形式 7 System.out.println(sum); 8 9 } 10 11 //JDK1.5之后寫法 12 public static int add(int...arr){ 13 int sum = 0; 14 for (int i = 0; i < arr.length; i++) { 15 sum += arr[i]; 16 } 17 return sum; 18 } 19 20 //原始寫法 21 /* 22 public static int add(int[] arr) { 23 int sum = 0; 24 for (int i = 0; i < arr.length; i++) { 25 sum += arr[i]; 26 } 27 return sum; 28 } 29 */ 30 }

  (5)上述add方法在同一個類中,只能存在一個。因為會發生調用的不確定性;

  (6)注意:如果在方法書寫時,這個方法擁有多參數,參數中包含可變參數,可變參數一定要寫在參數列表的末尾位置。

10、Collections集合工具類

  (1)Collections是集合工具類,用來對集合進行操作;

  (2)方法

  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],每次執行該方法,集合中存儲的元素位置都會隨機打亂

11、集合嵌套

  (1)集合嵌套并不是一個新的知識點,僅僅是集合內容又是集合,如Collection集合嵌套、Collection集合與Map集合相互嵌套、Map集合嵌套;

  (2)ArrayList嵌套 ArrayList

ArrayList< ArrayList<String> > Collection< ArrayList<Integer> >

  (3)Map嵌套 ArrayList

HashMap<String, ArrayList<Person>> ArrayList< HashMap<String, String>

  (4)Map集合嵌套

HashMap<String, HashMap<String,String>> HashMap<String, HashMap<Person,String>>

12、集合繼承體系的面向對象思想

  (1)接口:用來明確所有集合中該具有的功能,相當于在定義集合功能標準;

  (2)抽象類:把多個集合中功能實現方式相同的方法,抽取到抽象類實現,具體集合不再遍寫,繼承使用即可;

  (3)具體類:繼承抽象類,實現接口,重寫所有抽象方法,達到具備指定功能的集合。每個具體集合類,根據自身的數據存儲結構方式,對接口中的功能方法,進行不同方式的實現。

l? ArrayList嵌套 ArrayList

轉載于:https://www.cnblogs.com/gzdlh/p/8094862.html

總結

以上是生活随笔為你收集整理的00084_Map接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色悠悠国产精品 | 免费看黄网站在线观看 | 亚洲成a人片 | 91视频啊啊啊 | 亚洲欧美精品一区二区三区 | 91九色在线播放 | av无码精品一区二区三区宅噜噜 | 国产农村妇女毛片精品久久麻豆 | www.av成人 | 免费激情 | 亚洲第一天堂av | 欧洲av一区 | 性色AV无码久久一区二区三 | 在线观看黄 | 四虎www | 综合天天| 亚洲国产电影在线观看 | 国产精品1234区 | 国产欧美一区二区精品性色超碰 | 成人3d动漫一区二区三区 | 一本一道波多野结衣一区二区 | 澳门三级 | 亚洲国产成人精品一区二区三区 | 青青青手机在线视频 | 欧美精品免费在线 | 成人动漫在线观看免费 | 美女aaa | 999久久久 | 深夜福利一区二区 | 天堂在线中文字幕 | 白丝美女被草 | 最新中文字幕在线播放 | 亚洲国产精品成人av | 美女三级黄色 | 日韩岛国片| 久久精品免费播放 | 人人妻人人玩人人澡人人爽 | 青青艹视频 | 日本黄色小网站 | 欧美男人又粗又长又大 | 3344成人| 国产精品免费在线播放 | 亚洲在线资源 | 欧美色视频一区二区三区 | 国产电影一区二区三区爱妃记 | 操大爷影院 | 亚洲精品三级 | 国产精品高潮呻吟久久久久久 | 欧美成人精品在线观看 | 国产在线黄 | 日韩精品免费一区二区三区 | 免费看又黄又无码的网站 | 国产成人精品女人久久久 | 欧美国产综合视频 | av不卡高清 | a级在线播放 | 一级片成人 | 亚洲欧美日本在线观看 | 玩偶姐姐在线看 | 自拍偷拍校园春色 | 亚洲精选一区二区 | 91亚洲精品久久久久久久久久久久 | wwww欧美| av在线伊人| 国产九九精品视频 | 久99久视频 | 国产一区二区在线免费观看 | av在线播放一区二区三区 | 午夜精品久久久久久久91蜜桃 | 欧美.com | 国产一区av在线 | 永久免费看成人av的动态图 | 乱图区 | 精彩视频一区二区三区 | 青青99| 日韩色黄大片 | 成人免费视频国产 | 欧美乱妇18p | 亚洲成人激情视频 | 美国美女群体交乱 | 欧美性猛交一区二区三区精品 | 男女无套免费视频网站动漫 | 奇米第四色在线 | 性日韩 | 成人黄色短视频在线观看 | 99色网站| 污视频网址在线观看 | 贝利弗山的秘密在线观看 | 秋霞国产午夜精品免费视频 | 国产精品一二三四 | 亚洲免费国产视频 | 拔插拔插华人 | 狠狠干少妇 | 国产美女黄色片 | 美国毛片av | 91麻豆精品国产91久久久久久 | 福利视频网址 | 成人性生交大片免费 | 欧美成在线视频 |