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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

双列集合Map的实现类

發布時間:2023/12/3 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双列集合Map的实现类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Map接口【和Collection接口并列】

Map接口

成員方法【實現于Map接口,TreeMap也可實現,這里以HashMap為例】

//HashMap實現類 :無序[HashSet底存原理] 哈希表 public class Demo1 {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<>();//添加鍵值對[put方法]map.put("張三",20);map.put("李四",20);//如果鍵一樣,則后面的值會會覆蓋前面的值map.put("張三",40);map.put("王五",20);System.out.println(map);//remove 根據鍵刪除鍵值對元素,返回刪除的鍵對應的值Integer value1 = map.remove("張三");System.out.println(value1);//clear清空/*map.clear();System.out.println(map);*///containsKeys判斷集合中是否包含指定的鍵,并返回booleanboolean result1 = map.containsKey("張三");boolean result2 = map.containsKey("李四");System.out.println(result1);System.out.println(result2);//containsValue判斷集合中是否包含指定的值,并返回booleanboolean result3 = map.containsValue(20);boolean result4 = map.containsValue(40);System.out.println(result3);System.out.println(result4);//isEmpty判斷集合是否為空,并返回booleanboolean result5 = map.isEmpty();System.out.println(result5);//int size()集合的長度,集合中鍵值對的個數System.out.println(map.size());//keySet獲取所有的鍵Set<String> keys = map.keySet();System.out.println(keys);//get(Key)獲取鍵對應的值Integer value2 = map.get("張三");Integer value3 = map.get("李四");System.out.println(value2);System.out.println(value3);//entrySet獲取所有的鍵值對Set<Map.Entry<String, Integer>> entries = map.entrySet();System.out.println(entries);} }打印結果: ---------------------------------------------------------------- {李四=20, 張三=40, 王五=20} 40 false true true false false 2 [李四, 王五] null 20 [李四=20, 王五=20]

Map集合遍歷方法

//遍歷HashMap public class Demo3 {public static void main(String[] args) {//創建集合并添加元素HashMap<String, String> map = new HashMap<>();map.put("1號丈夫", "1號妻子");map.put("2號丈夫", "2號妻子");map.put("3號丈夫", "3號妻子");map.put("1號丈夫", "1號妻子");//第一中方法:鍵找值的方式//keySet獲取所有的鍵//返回值為set集合[set為接口,集合類型為其具體的實現類]Set<String> keys = map.keySet();for (String key : keys) {String value = map.get(key);System.out.println(key + "..." + value);}System.out.println("----------------------------");//第二種方法:獲取鍵值對對象//entrySet獲取所有的鍵值對對象// //返回值為set集合[set集合存儲的是鍵值對對象,Entry存儲的是鍵和值]Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String,String> entry : entries) {System.out.println(entry.getKey() + "..." + entry.getValue());}} }打印結果: ----------------------------------------------------------------- 1號丈夫...1號妻子 2號丈夫...2號妻子 3號丈夫...3號妻子 ---------------------------- 1號丈夫...1號妻子 2號丈夫...2號妻子 3號丈夫...3號妻子
實現類HashMap

1.特點:無序,雙列,鍵唯一,值可重復,不可排序
2.底層原理:哈希表【鏈表,數組,[鏈表滿8為]紅黑樹】

HashMap和HashSet一樣底層為哈希表,默認比較為地址值,API有的類已經寫好的我們就不需要重寫,但我們自定義的類一般都需要重寫HashCode方法

a.【HashMap默認比較鍵的地址值】

//HashMap存儲對象 //保證鍵不重復 public class Demo4 {public static void main(String[] args) {HashMap<Student, String> map = new HashMap<>();Student student1 = new Student("JS", 1800);Student student2 = new Student("LQ", 2000);Student student3 = new Student("小汪", 18);Student student4 = new Student("小汪", 18);map.put(student1, "獸族");map.put(student2, "不死族");map.put(student3,"獸族");map.put(student4, "牛牛牛");// public int hashCode() {// int h = 0;// for (Entry<K, V> entry : entrySet())// h += entry.hashCode();// return h;// }Set<Map.Entry<Student, String>> entries = map.entrySet();for (Map.Entry<Student, String> entry : entries) {System.out.println(entry.hashCode());}//鍵值對遍歷Set<Map.Entry<Student, String>> entries1 = map.entrySet();for (Map.Entry<Student, String> entry : entries) {System.out.println(entry.getKey() + "..." + entry.getValue());}} }打印結果: --------------------------------------------------------------- 473594216 780099464 189191576 1314561244 Student{name='小汪', age=18}...牛牛牛 Student{name='LQ', age=2000}...不死族 Student{name='JS', age=1800}...獸族 Student{name='小汪', age=18}...獸族

b.【HashMap重寫鍵的equals方法和hashCode方法比較鍵的屬性值】

---------------------測試類代碼不變--------------------------- public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;if (age != student.age) return false;return name != null ? name.equals(student.name) : student.name == null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;} }打印結果: -------------------------------------------------------------- 14493644 20137578 746797 //鍵相同的時候,后面鍵對應的值就會覆蓋前面的值 Student{name='小汪', age=18}...牛牛牛 Student{name='LQ', age=2000}...不死族 Student{name='JS', age=1800}...獸族

與HashSet的區別:重寫針對的都是HashMap的鍵,其他步驟一樣。

實現類TreeMap

1.特點:無序,雙列,鍵唯一,值可重復,有排序功能
2.底層原理:紅黑樹
3.需要指定排序規則,API中有一些類已經實現了Comparable接口],給出了默認排序規則,如:Integer:數值大小[升序] String:字典順序等

底層為紅黑樹會自動對鍵排序,需要指定排序順序,有兩種方式指定1.實現Comparable接口,重寫compareTo方法2.創建比較器Comparator,重寫compare方法

與TreeSet的區別:重寫針對的都是TreeMap的鍵,其他步驟一樣。

Map接口圖解

總結

以上是生活随笔為你收集整理的双列集合Map的实现类的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一区二区三区网站 | 少妇真人直播免费视频 | 污的视频在线观看 | 久久日本视频 | av网站久久 | 香蕉视频一区二区三区 | 极品熟妇大蝴蝶20p 国产偷自拍视频 | 麻豆国产尤物av尤物在线观看 | 黑人一区 | 黄a视频 | 成年人看的毛片 | 精品综合网 | 女同vk| 欧美色亚洲 | 亚洲色婷婷久久精品av蜜桃 | 91爱爱com| 好吊妞这里只有精品 | 欧美成人91 | 国产综合日韩 | 一道本av | 亚洲永久无码精品一区二区 | 自拍超碰| 久久国产精品系列 | 99久在线精品99re8热 | 国产一级爱 | 99久久婷婷国产综合精品草原 | 国产免费无遮挡 | 欧美黄色成人 | 欧美激情视频网址 | 欧美人与性动交g欧美精器 国产在线视频91 | 999色综合| 国产三级播放 | 999av视频 | 伊人资源 | a视频在线看| 伊人精品视频 | 久久国产精 | 欧美成人国产 | 女人做爰全过程免费观看美女 | 国产激情亚洲 | 精品国产aⅴ一区二区三区东京热 | 成人无码久久久久毛片 | 自拍亚洲一区 | 少妇高潮惨叫久久久久 | 嫩草www | 中国亚洲老头同性gay男男… | 特级西西人体wwwww | 久久免费视频1 | 精品国产免费视频 | 色吧久久| 中文字幕无码精品亚洲资源网久久 | 欧美日韩首页 | 一二区在线观看 | 不卡视频国产 | 精品视频免费在线观看 | 橹图极品美女无圣光 | 国产高清网站 | 黑人巨大精品欧美一区免费视频 | 久久精品视频1 | 国产第一页精品 | 草草久久久无码国产专区 | 在线观看国产一区二区三区 | 国产sss| 性史性dvd影片农村毛片 | 国产在线免费视频 | 国产视频二区三区 | 亚洲aa在线 | 国产女人毛片 | 白白色在线播放 | 在线h网站| 国产精品视频一区二区三 | 久久久久久成人 | 亚洲视频天堂 | 男人插女人网站 | 男人操女人下面 | 色屁屁在线 | 青青草视频免费观看 | 国产成人无码精品久久久久久 | 午夜综合| 男女www | 办公室摸腿吻胸激情视频 | 成年人视频网 | 96日本xxxxxⅹxxx70 | 99在线成人精品视频 | 91视频影院 | caobi视频| 精品成人在线观看 | 精品一区在线看 | 亚洲欧美高清 | 精品人妻午夜一区二区三区四区 | 免费视频99 | 污片在线免费看 | 韩国性猛交╳xxx乱大交 | 免费av网址大全 | 国产性猛交xxxx免费看久久 | 最新黄色av | 久久久美女 | 99re6这里有精品热视频 | 三级91 |