java简单实现数字与字母的映射关系

实现数字与字母映射表的对应关系:


题目规则介绍:
在这里插入图片描述


思路:

首先我是先搭个框架出来,写个for循环,然后把规则写死在Map方法,如:map.put(3,“A”);map.put(5,“B”);等
因为题目中不能在循环写if判断,我就先在类外面定义个A方法,在这里面写业务逻辑,判断之类;在循环中去调用这个方法;
业务逻辑判断:

  • 规则1、每次从循环传进一个参数,就会去map判断是否存在,存在则赋值A;
  • 规则2、3、从循环传进一个参数,规则三可能要多个字母拼接,所以使用了StringBuilder,在A方法使用map.keySet()循环:判断入参%key==0
    则把当前map的value值赋值StringBuilder对象;

自测成功后,准备优化下一点:使用设计模式
下面我选择的是懒汉加载的单例模式
简单说下单例模式的特点:
1、在程序生命周期内是只存在一个对象
2、懒汉模式是在调用的时候去创建一个对象;饿汉模式是程序启动的时候创建;
3、实现方式:1.构造方法私有;2.公共的静态方法内判断对象如果为空则创建对象;3.把当前对象设置为私有静态属性;

然后接下来把业务逻辑的A方法放入单例对象中,测试时把单例对象创建出来,在for方法使用A方法,并打印日志

下面是我自测的代码,可以参考下,其实题目描述还是还有哪些待优化,或者有bug、遗漏的问题,欢迎在评论区,互相讨论,谢谢

测试类

@Slf4j
public class AlphabeticMapping implements Mappings {public static void main(String[] args) {LazyAcalculation instance = LazyAcalculation.getInstance();//0-100for (int i = 1; i <= 100; i++) {String calculation = instance.getCalculation(i);String str = Obje在这里插入代码片ctUtils.isEmpty(calculation) ? i + "":calculation;log.info("当前数字" +i+ "映射字母:" + str);}}
}

下面是懒汉单例对象:

public class LazyAcalculation implements Mappings {private static LazyAcalculation lazyAcalculation;private LazyAcalculation() {}public static LazyAcalculation getInstance() {if (lazyAcalculation == null) {lazyAcalculation = new LazyAcalculation();}return lazyAcalculation;}//数字与字母的映射表计算public String getCalculation(Integer age) {Map<Integer, String> map = new HashMap<>();map.put(3, "A");map.put(5, "B");map.put(7, "C");String str = null;StringBuilder builder = new StringBuilder();if (map.containsKey(age)) {str = map.get(age);} else {for (Integer integer : map.keySet()) {if (age % integer == 0) {builder.append(map.get(integer));}str = builder.toString();}}return str;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部