博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java与Map的那点事
阅读量:5239 次
发布时间:2019-06-14

本文共 1726 字,大约阅读时间需要 5 分钟。

Java将Map拼接成“参数=值&参数=值”:

  把一个map的键值对拼接成“参数=值&参数=值”即“username=angusbao&password=123456”这种形式方便传递,尤其是在接口调用的时候,这种方式使用的更加普遍,比如http请求的get方式,如何用java对其进行解决呢?

  代码如下:

  /** 

  * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
  * @param params 需要排序并参与字符拼接的参数组
  * @return 拼接后字符串
  * @throws UnsupportedEncodingException 
  */
  public static String createLinkStringByGet(Map<String, String> params) throws UnsupportedEncodingException {
    List<String> keys = new ArrayList<String>(params.keySet());
    Collections.sort(keys);
    String prestr = "";
    for (int i = 0; i < keys.size(); i++) {
      String key = keys.get(i);
      String value = params.get(key);
      value = URLEncoder.encode(value, "UTF-8");
      if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符
        prestr = prestr + key + "=" + value;
      } else {
        prestr = prestr + key + "=" + value + "&";
      }
    }
    return prestr;
  }
  public static void main(String[] args) throws UnsupportedEncodingException {
    Map<String,String> map= new HashMap<String,String>();
    map.put("1", "hello");
    map.put("2", "world");
    System.out.println(createLinkStringByGet(map));
  }

 

关于项目使用MAP和实体类作为参数的优缺点:

Map:

优点:

1.灵活性强于javabean,易扩展,耦合度低。

2.写起来简单,代码量少。

3.mybatis 查询的返回结果本身就是MAP,可能会比返回javabean快

一点;

 

缺点:

1.javabean在数据输入编译期就会对一些数据类型进行校验,如果出错会直接提示。而map的数据类型则需要到sql层,才会进行处理判断。

2.map的参数名称如果写错,也是需要到sql层,才能判断出是不是字段写错,不利于调试等。相对而言javabean会在编译期间发现错误

3.map的参数值如果多传、乱传,也是需要到sql层,才能判断出是不是字段写错,不利于调试等。相对而言javabean会在编译期间发现错误

4.仅仅看方法签名,你不清楚Map中所拥有的参数个数、类型、每个参数代表的含义。后期人员去维护,例如需要加一个参数等,如果项目

层次较多,就需要把每一层的代码都了解清楚才能知道传递了哪些参数。

 

Javabean:

优点:

1.面向对象的良好诠释

2.数据结构清晰,便于团队开发 & 后期维护;

3.代码足够健壮,可以排除掉编译期错误。

 

缺点:

1.代码量增多,大量时间去封装用到的表对象;
2.可能会影响开发效率。

 

转载于:https://www.cnblogs.com/ZJOE80/p/10094826.html

你可能感兴趣的文章
Erdaicms旅游网站程序,微信扫码登录演示和示例程序
查看>>
15第十五章UDF用户自定义函数(转载)
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
Remove '@Override' annotation错误
查看>>
mybatis笔记<一> Demo
查看>>
YUV 格式的视频呈现
查看>>
开通了blog写一些技术blog及感悟
查看>>
Android弹出框的学习
查看>>
349. Intersection of Two Arrays【双指针|二分】
查看>>
extjs gridpanel滚动条问题显示数据不完整
查看>>
springboot(四)设置Redis和Spring的整合
查看>>
mysql提示Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist解决方法...
查看>>
String字符串创建与存储机制
查看>>
现代程序设计 作业1
查看>>
事件和信号量
查看>>
在android开发中添加外挂字体
查看>>
Java中类体的构成
查看>>
HTML5实现图片文件异步上传
查看>>
Eclipse 4.2 汉化
查看>>