电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java Map接口及其實現類原理解析

瀏覽:92日期:2022-09-04 11:13:56

Map接口

Map提供了一種映射關系,其中的元素是以鍵值對(key-value)的形式存儲的,能夠實現根據key快速查找value;

Map中的鍵值對以Entry類型的對象實例形式存在;建(key值)不可重復,value值可以重復,一個value值可以和很多key值形成對應關系,每個建最多只能映射到一個值。

Map支持泛型,形式如:Map<K,V>

Map中使用put(K key,V value)方法添加

Map接口中定義的常用方法

具體使用在實現類中討論

int size();//獲取Map集合大小(即元素數量)boolean isEmpty();//判斷是否為空boolean containsKey(Object key);//判斷是否包含某個鍵boolean containsValue(Object value);//判斷是否包含某個值V get(Object key);//獲取某個鍵對應的值V put(K key, V value);//添加鍵值對(K,V)V remove(Object key);//移除某個鍵對應的鍵值對void putAll(Map<? extends K, ? extends V> m);//添加另一個Map集合void clear();//清空所有鍵值對Set<K> keySet();//獲取鍵的集合Collection<V> values();//獲取值的集合Set<Map.Entry<K, V>> entrySet();//獲取鍵值對實體的集合interface Entry<K,V>//Map中的內部接口

HashMap

基于哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)除實現了Map接口外還實現了Cloneable,Serializable,繼承了AbstractMap抽象類

此類不保證映射的順序,特別是它不保證該順序恒久不變。

特點:

鍵無序,唯一,類似于Set集合 值有序,可重復,類似于List 底層數據結構是哈希表,保證鍵唯一

允許鍵為null,值為null

// HashMap<String, Student> hm = new HashMap<String, Student>();// hm.put('2018050401', new Student('2018050401', '張三', 18, 80.0));// hm.put('2018050402', new Student('2018050402', '李四', 18, 80.0));// hm.put('2018050403', new Student('2018050403', '李四', 18, 80.0));// hm.put('2018050404', new Student('2018050404', '王五', 18, 80.0));// hm.put('2018050404', new Student('2018050404', '王五', 18, 80.0));// // // 方式一: 通過鍵找值// Set<String> keys = hm.keySet();// for (String key : keys) {// Student s = hm.get(key);// System.out.println(key + '|' + s.getId() + '|' + s.getName() + '|' + s.getAge() + '|' + s.getScore());// } HashMap<Student, String> hm = new HashMap<Student, String>(); hm.put(new Student('2018050401', '張三', 18, 80.0),'2018050401'); hm.put(new Student('2018050402', '李四', 18, 80.0),'2018050402'); hm.put(new Student('2018050403', '李四', 18, 80.0), '2018050403'); hm.put(new Student('2018050404', '王五', 18, 80.0), '2018050404'); hm.put(new Student('2018050404', '王五', 18, 80.0), '2018050404');// 方式二: 通過鍵值對對象找鍵找值 Set<Entry<Student, String>> keyValues = hm.entrySet(); for (Entry<Student, String> keyValue : keyValues) { Student s = keyValue.getKey(); String value = keyValue.getValue(); System.out.println(s.getId() + '|' + s.getName() + '|' + s.getAge() + '|' + s.getScore() + '=' + value); }

LinkedHashMap

Map 接口的哈希表和鏈表實現,具有可預知的迭代順序

特點:

鍵有序,唯一, 值有序,可重復,類似于List

底層數據結構是哈希表和鏈表,哈希表保證鍵唯一,鏈表保證鍵有序

LinkedHashMap<Integer, String> lhm = new LinkedHashMap<Integer, String>(); lhm.put(01, '張三1'); lhm.put(02, '張三2'); lhm.put(03, '張三3'); lhm.put(04, '張三4'); lhm.put(05, '張三5');Set<Integer> keys = lhm.keySet(); for (Integer key : keys) { System.out.println(key + '|' + lhm.get(key)); }

TreeMap

基于紅黑樹(Red-Black tree)的 NavigableMap 實現。該映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的 Comparator 進行排序,

具體取決于使用的構造方法。

特點:

鍵可排序,唯一, 值有序,可重復,類似于List 底層數據結構是自平衡的二叉樹,可排序

排序方式類似于TreeSet,分為自然排序和比較器排序,具體取決于使用的構造方法

TreeMap<Integer, String> tm = new TreeMap<Integer, String>(); tm.put(24, 'Hello1'); tm.put(14, 'Hello2'); tm.put(34, 'Hello3'); tm.put(124, 'Hello4'); tm.put(24, 'Hello5'); tm.put(24, 'Hello6'); tm.put(24, 'Hello7'); tm.put(244, 'Hello8'); tm.put(624, 'Hello9'); tm.put(24, 'Hello10'); Set<Integer> keys = tm.keySet(); for (Integer key : keys) { String value = tm.get(key); System.out.println(key + '|' + value); }

HashTable

此類實現一個哈希表,該哈希表將鍵映射到相應的值。任何非 null 對象都可以用作鍵或值

特點:

不允許null鍵和null值 線程安全,效率低

HashMap和Hashtable的區別:

HashMap是不安全的不同步的效率高的 允許null鍵和null值 Hashtable是安全的同步的效率低的 不允許null鍵和null值

底層都是哈希表結構

Hashtable<String, String> hashtable = new Hashtable<String, String>(); hashtable.put('劉備', '孫尚香'); hashtable.put('孫策', '大喬'); hashtable.put('周瑜', '小喬'); hashtable.put('呂布', '貂蟬'); System.out.println(hashtable); Enumeration<String> keys = hashtable.keys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); String value = hashtable.get(key); System.out.println(key + '|' + value); }

WeakHashMap

以弱鍵 實現的基于哈希表的 Map。在 WeakHashMap 中,當某個鍵不再正常使用時,將自動移除其條目。更精確地說,對于一個給定的鍵,其映射的存在并不阻止垃圾回收器對該鍵的丟棄,這就使該鍵成為可終止的,被終止,然后被回收。丟棄某個鍵時,其條目從映射中有效地移除,因此,該類的行為與其他的 Map 實現有所不同。

WeakHashMap<String,String> whm = new WeakHashMap<>(); whm.put(new String('hello1'), 'world1'); whm.put(new String('hello2'), 'world2'); whm.put(new String('hello3'), 'world3'); whm.put('hello4', 'world3'); System.out.println(whm); System.gc(); System.runFinalization(); System.out.println(whm);

鍵是枚舉類型

EnumMap<Direction, String> em = new EnumMap<>(Direction.class); em.put(Direction.UP, '向上移動'); em.put(Direction.DOWN, '向下移動'); em.put(Direction.LEFT, '向左移動'); em.put(Direction.RIGHT, '向右移動');Set<Direction> keys = em.keySet(); for (Direction key : keys) { String value = em.get(key); System.out.println(key + '|' + value); }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 北京京云律师事务所 | 桐城新闻网—桐城市融媒体中心主办| 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 全自动固相萃取仪_高通量真空平行浓缩仪-勤业永为 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 干式磁选机_湿式磁选机_粉体除铁器-潍坊国铭矿山设备有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 方源木业官网-四川木门-全国木门专业品牌 | 钢制拖链生产厂家-全封闭钢制拖链-能源钢铝拖链-工程塑料拖链-河北汉洋机械制造有限公司 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 全自动不干胶贴标机_套标机-上海今昂贴标机生产厂家 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 安徽成考网-安徽成人高考网| 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 高考志愿规划师_高考规划师_高考培训师_高报师_升学规划师_高考志愿规划师培训认证机构「向阳生涯」 |