HashMap的使用,Service映射

简介: HashMap的使用,Service映射

一 前言

  说到map,其实很多人都是很头疼的,因为相比于List,Map的可读性更低,因此,在开发中我以前还是比较多的使用List,但是其实Map还是有非常多的好处的,现在就介绍一种Map非常实用的处理方式

## 二 场景

  你付款时,有两种付款方式,支付宝和微信支付。针对这两种支付方式会有不同的逻辑处理,这时候你可能会对两种支付方式建立不同的两个类,然后更具传入的类型判断使用哪种支付方式。

boolean isZFB =true;
boolean isWX =true;
if(isZFB){
    //调用支付宝实现
}
if(isWX){
    //调用微信实现
}

这样会有一个问题,随着支付方式的增多,if就会越来越多,最后很容易成为面条代码。这时候map可以解决这个问题。

## 三 应用
首先我们建立一个抽象的接口(这里面就使用正常的实战例子)

 public interface IEdiSender {}
 

建立接口的实现类

 public class Csm001ShipEdiService implements IEdiSender{
    public static final String EDI_TYPE = "CSM001";
    @Override
    public String getEdiType() {
        return EDI_TYPE;
    }
}

public class Csm002ShipEdiService implements IEdiSender{
    public static final String EDI_TYPE = "CSM002";
    @Override
    public String getEdiType() {
        return EDI_TYPE;
    }
}

然后在Spring初始化的时候将类型码与实现的实例进行一个映射

@Service
public class EdiSenderProvider implements ApplicationContextAware {

    private Map<String, IEdiSender> iEdiSenderMap;

    public IEdiSender getEdiSenderByType(String ediType) {
        return iEdiSenderMap.get(ediType);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        Map<String, IEdiSender> beansOfType = applicationContext.getBeansOfType(IEdiSender.class);
        iEdiSenderMap = new HashMap<String, IEdiSender>();
        for (IEdiSender iEdiSender : beansOfType.values()) {
            iEdiSenderMap.put(iEdiSender.getEdiType(), iEdiSender);
        }

    }



}

然后调用时直接通过类型获取实例就可以了,非常使用,其实这个和Beanfactory的Map是一样的效用。

相关文章
|
2月前
|
存储 算法 安全
深入了解哈希映射(HashMap)
哈希映射是现代软件开发中不可或缺的一种数据结构,它通过独特的存储和检索机制,提供了高效的数据处理能力。正确理解和使用哈希映射,能够显著提高软件性能和开发效率。不论是在日常的软件开发还是在处理大规模数据集时,哈希映射都是一个极佳的选择。
34 1
|
3月前
|
存储 缓存 Rust
Rust 笔记:Rust 语言中哈希结构(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用
Rust 笔记:Rust 语言中哈希结构(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用
734 0
|
存储 缓存 Rust
Rust 笔记:Rust 语言中映射(HashMap)与集合(HashSet)及其用法
本文介绍 Rust 中哈希结构相关概念及其使用。在 Rust 中,提供了两种哈希表,一个是 HashMap,另外一个是 HashSet,本文都将逐一介绍,并介绍 哈希函数 的用法。
263 0
|
存储 算法 Java
《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
《恋上数据结构第1季》映射 TreeMap,HashMap,LinkedHashMap
|
存储 Python Java
LeetCode 706:设计哈希映射 Design HashMap
题目: 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。 get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。
1057 0
|
Java 容器 C++
HashMap 映射
问:java中Map与HashMap 的关系是什么? 答:Map是一个接口,HashMap是Map的实现类之一。 Entry 与 Map  java.util.Map.Entry&lt;K, V&gt;  interface Entry&lt;K,V&gt;  类似于cpp中的pair。  template&lt;class _T1, class _T2&gt;     st
1167 0
|
3月前
|
存储 算法 Java
【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(下)
在阅读了上篇文章《【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)》之后,相信您对HashMap的基本原理和基础结构已经有了初步的认识。接下来,我们将进一步深入探索HashMap的源码,揭示其深层次的技术细节。通过这次解析,您将更深入地理解HashMap的工作原理,掌握其核心实现。
46 0
【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(下)
|
3月前
|
存储 安全 Java
从源码角度来谈谈 HashMap
HashMap的知识点可以说在面试中经常被问到,是Java中比较常见的一种数据结构。所以这一篇就通过源码来深入理解下HashMap。
70 0
从源码角度来谈谈 HashMap
|
3月前
|
存储 安全 Java
HashMap源码全面解析
HashMap源码全面解析
|
3月前
|
Java
IDEA debug HashMap源码的心得
IDEA debug HashMap源码的心得
36 0