首页 > 其他分享 >开发时推荐使用Map map = new HashMap()

开发时推荐使用Map map = new HashMap()

时间:2023-11-09 14:12:20浏览次数:29  
标签:SuperMap HashMap Map 接口 map new

Map map = new HashMap();
Map是一个接口,HashMap是具体的实现类。
由于接口就是多个类的共有规范(里面的抽象方法),是一种引用数据类型,一个抽象的概念,不能被实例化,因此接口需要由具体的类来实现。
这条代码指明:由HashMap类来实现接口Map中描述的方法。

HashMap map = new HashMap();
声明一个HashMap类型的map,由HashMap类实现。

为什么更推荐第一种用接口的声明方式?
这个问题等同于为什么要在编程中使用接口,而不是直接使用实现类。其实这就是面对对象编程(OOP)的思想精髓。简单来说就是:上层接口描述的功能不变,下层的具体实现可以不断修改替换。上层的调用者只用知道map的功能,不必关心map的具体实现。

例如,某天开发人员开发出一个各方面性能都优于HashMap的SuperMap类,则map可以直接改成由SuperMap来实现:Map map = new SuperMap()。对于外部调用者来说,使用的还是那个map,殊不知底层实现的升级已经让他们用上了优化版的map。如果一开始就定义map为HasMap类型,无法做出这样的优化,很明显 HashMap map = new SuperMap() 是条错误的代码。这就是使用接口声明的好处,增加系统灵活性,隔离性等。

转载https://blog.csdn.net/qq_45477595/article/details/106087948

标签:SuperMap,HashMap,Map,接口,map,new
From: https://www.cnblogs.com/reallife/p/17819172.html

相关文章

  • vue2项目使用vueAMap
    npminstallvue-amap-D在main.jsimportVueAMapfrom"vue-amap";Vue.use(VueAMap);VueAMap.initAMapApiLoader({key:"高德地图的key",//这里写你申请的高德地图的keyplugin:["AMap.Autocomplete","AMap.Geocoder","AMap.Geol......
  • No MyBatis mapper was found in ‘[SpringBoot启动类所在路径]‘ package 原因解析及
    NoMyBatismapperwasfoundin‘[SpringBoot启动类所在路径]‘package原因解析及解决方案NoMyBatismapperwasfoundin'[XXX]'package友情提示:搜到这篇文章的,一般是急于解决这个问题的,看下常见原因排除后,可以忽略分析过程直接看解决方案,我自己出现这个问题的原因主......
  • STL之unordered_set与unordered_map的模拟实现(万字长文详解)
    unordered_set与unordered_map的模拟实现哈希节点类#pragmaonce#include<iostream>#include<vector>namespaceMySTL{template<classT>structHashNode{HashNode(constT&data=T())......
  • Spring mvc中@RequestMapping 6个基本用法小结
    小结下springmvc中的@RequestMapping的用法。 1)最基本的,方法级别上应用,例如:    Java代码  @RequestMapping(value="/departments")public"simplePatternmethodwascalled");return"someResult";}  则访问http://loc......
  • Marine protected areas(MAPs)
    IntroductionThePeople’sRepublicofChinaisthelargestproducerandconsumeroflifeintheocean,bothfarmedandwild-caught.Itsfleetshaulfromdomesticseas,foreignterritories,andwatersbeyondanynationaljurisdiction,with39%ofthecount......
  • Map---SortedMap&NavigableMap&TreeMap
    SortedMap概述A{@linkMap}thatfurtherprovidesa<em>totalordering</em>onitskeys.Themapisorderedaccordingtothe{@linkplainComparablenaturalordering}ofitskeys,orbya{@linkComparator}typicallyprovidedatsortedmapcreati......
  • HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
    一、HashMap和TreeMap区别1、HashMap是基于散列表实现的,时间复杂度平均能达到O(1)。   TreeMap基于红黑树(一种自平衡二叉查找树)实现的,时间复杂度平均能达到O(logn)。2、HashMap、TreeMap都继承AbstractMap抽象类;TreeMap实现SortedMap接口,所以TreeMap是有序的!HashMap是无序的......
  • Burp联动Sqlmap插件进行sql注入扫描
    一、插件介绍sqlmap4burp++是一款兼容Windows,mac,linux多个系统平台的Burp与sqlmap联动插件这个插件嘎嘎好用,大大提升了sqlmap的效率项目地址https://github.com/c0ny1/sqlmap4burp-plus-plusgithub中间有空格,把空格去掉在进行访问即可进入burp拓展模块点击添加上传文件......
  • HashMap---jdk8
    概述HashtablebasedimplementationoftheMapinterface.Thisimplementationprovidesalloftheoptionalmapoperations,andpermits<tt>null</tt>valuesandthe<tt>null</tt>key.(The<tt>HashMap</tt>classis......
  • ArcMap中Cut Polygons Tool工具将一个面图层切割为多个部分
      本文介绍在ArcGIS下属ArcMap软件中,通过“CutPolygonsTool”工具,对一个面要素矢量图层加以手动分割,从而将其划分为指定形状的多个部分的方法。  对于一个面要素矢量文件,有时我们需要对其加以划分,通过手动勾勒新的线条的方式,将其中原本的一个面分割为多个指定的小区域;本文就......