依据ASCII排序:有关map.entrySet()的一些心得

2023-11-16

List<Map.Entry<String, Object>> toSort = new ArrayList<Map.Entry<String, Object>>(map.entrySet());

map里面有一个内部接口,用于返回类似于

[key1=value1, key2=value2]

其中【分隔符为 逗号加空格 】【前后均有中括号】

//用eclipse补全信息助手,返回的类型:
Set<Map.Entry<String, Object>> entrySet = map.entrySet(); 

map.entrySet() 的返回值类型就是Map.Entry<String, Object>

所以上述是说 建立一个List泛型为Map.Entry<String, Object>,内容是map.entrySet()的每一个键值对

public static String orderByAscii(Map<String, Object> paramIn) {  
    List<Map.Entry<String, Object>> toSort = new ArrayList<Map.Entry<String, Object>>(paramIn.entrySet());  
    //A→Z升序排列
    Collections.sort(toSort, (o1, o2) -> {  
        return (o1.getKey()).compareTo(o2.getKey());  
    });  
      
    StringBuilder str = new StringBuilder();  
    for (Map.Entry<String, Object> entry : toSort) {  
        str.append(entry.getKey());  
        str.append(entry.getValue());  
    }  
    return str.toString();  
}  

 

以下是对map 和 map.entrySet() 转换成 json 的一些探究

public static void main(String[] args) throws Exception {  
   HashMap<String, Object> hashMap = new HashMap<String,Object>();  
   hashMap.put("k1", "v1");  
   hashMap.put("k2", "v2");  
   hashMap.put("k3", "v3");  
   hashMap.put("k4", "v4");  
   System.out.println(hashMap);  
   //{k1=v1, k2=v2, k3=v3, k4=v4}  

   System.out.println(hashMap.toString());  
   //{k1=v1, k2=v2, k3=v3, k4=v4}  

   System.out.println(hashMap.entrySet());  
   //[k1=v1, k2=v2, k3=v3, k4=v4]  

   System.out.println(hashMap.entrySet().toString());  
   //[k1=v1, k2=v2, k3=v3, k4=v4]  

   //可以看到打印的时候 toString() 方法没什么影响,但事实并非如此
   //下面的JSON.toJSONString() 方法让我了解到 toString()之后是一个整体
   //这在开发接口时 会带来意想不到的简便操作

   System.out.println(JSON.toJSONString(hashMap));  
   //{"k1":"v1","k2":"v2","k3":"v3","k4":"v4"} 
 
   System.out.println(JSON.toJSONString(hashMap.toString()));  
   //"{k1=v1, k2=v2, k3=v3, k4=v4}"  

   System.out.println(JSON.toJSONString(hashMap.entrySet()));  
   //[{"k1":"v1"},{"k2":"v2"},{"k3":"v3"},{"k4":"v4"}]  

   System.out.println(JSON.toJSONString(hashMap.entrySet().toString()));  
   //"[k1=v1, k2=v2, k3=v3, k4=v4]"  

}  

所以我在传递参数的时候会这样写:

System.out.println(hashMap.entrySet().toString());  
//[k1=v1, k2=v2, k3=v3, k4=v4]  

String str = hashMap.entrySet().toString().replaceAll(", ", "%26");
//将逗号和空格提换成%26(解码后就是&符号)
String param = str.subString(1,str.length()-1);
//k1=v1%26k2=v2%26k3=v3%26k4=v4

 

——————

2019.02.26

MedusaSTears

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

依据ASCII排序:有关map.entrySet()的一些心得 的相关文章

随机推荐

  • Anaconda中安装指定版本的tensorflow1.14.0/tensorflow-gpu1.14.0

    在运行github中一个项目时 由于其使用的tensorflow的版本是1 14 0 而我的版本是2 6 0的版本 因为版本过高导致运行失败 所以需要安装tensorflow1 14 0 首先在anaconda的命令行中输入如下命令 pip
  • 【Qt】【CMake】【CMakeLists.txt】-PROJECT_NAME 和 CMAKE_PROJECT_NAME 的区别

    Qt CMake CMakeLists txt PROJECT NAME 和 CMAKE PROJECT NAME 的区别 原帖 https stackoverflow com questions 38938315 difference b
  • 2000+Docker镜像,Kolla是如何管理的

    根据 DockerHub 上的数据 整个 Kolla 项目管理的 镜像有 2000 多个 这么多的镜像 是怎么定义 又是如何构建的呢 简介 我们一直在说的 Kolla 通常情况下泛指 包括了 Kolla 和 Kolla Ansible 两个
  • 二进制部署K8s

    一 环境需求 节点IP 节点名称 所需组件 192 168 248 11 k8s master docker etcd apiserver controller manager scheduler kube proxy flannel 19
  • cobra库:基于cobra-cli命令行生成项目结构

    cobra库 基于cobra cli命令行生成项目结构 一 新建go项目 在F盘创建文件夹cobra started 1 使用mod对go项目进行管理 go mod init cobra started 二 使用cobra cli代码生成
  • 手写嵌入式操作系统(基于stm8单片机)

    include
  • maven学习总结

    众所周知 maven的两大作用是项目构建和依赖管理 除此之外 基于多模块项目 maven常用的功能还有模块化管理 项目构建 Maven是一个构建工具 可以根据项目中的配置文件 pom xml 来自动执行项目的构建过程 它可以将源代码编译 运
  • win10 win7局域网、AD域内共享文件夹方法

    第一 确保访问电脑和被访问电脑同在域中 可右击此电脑 属性 域 查看 第二 确保防火墙关闭 如图均已关闭 第三 选择要共享的文件夹 右击 属性 共享 高级共享 全新 Everyone或指定个人 第四 分享地址 即 本机IP地址 win r输
  • 惠普 g5 服务器 centos安装系统,hp 380G5 安装centos 7

    最近给服务器升级操作系统 发现hp的老机器安装centos 7时不能识别硬盘 原因 hp的服务器G5 使用的是CCISS driver 新的机器使用的是HPSA driver RHEL7 已经移除了 cciss 的支持 处理 安装时候 修改
  • 常数据成员、常成员函数

    定义常数据成员 类型 const 对象名 或者 const 类型 对象名 例如 const clock c1 9 9 9 或者 clock const c2 10 10 10 常对象的几条特殊规则 1 常对象 不能被赋值 2 常对象 不能访
  • 【Pytorch Lighting】第 7 章:半监督学习

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 2、halcon+利用光流场检测运动的物体

    这个事例是应用optical flow mg这个算子来在一个图像序列中计算其光溜 并且分割其运动物体 dev update off 把程序窗口 变量窗口 显示窗体变为off状态 dev close window 关闭显示窗口 read im
  • Bert Estimator input_fn 函数调用逻辑

    目录 Bert Estimator input fn 函数调用逻辑 Bert Estimator input fn 函数调用逻辑 网上有很多讲 Bert 源码的 本身代码难度不大 主要两个重点 一个是数据集的处理 以满足 masked LM
  • 整理极客冠军方案

    总结 通常套路就是 1 先观察整体的数据分布 数据集数量 标签数量 标注框数量 数据集数量 数量大 大模型训练缓慢 标签数量 各类的分布情况 gt 分布是否平衡 focal损失函数 长尾分布 样本分布不均衡 mosaic 小目标相对较多 m
  • springboot MongoDB 主从 多数据源

    上一篇 我写了关于用一个map管理mongodb多个数据源 每个数据源 只有单例 的内容 springboot mongodb 配置多数据源 临到部署到阿里云的测试环境 发现还需要考虑一下主从的问题 阿里云买的数据库 不是说让你无感知的 而
  • curl 支持 http2

    源码安装 安装 nghttp2 git clone https github com tatsuhiro t nghttp2 git cd nghttp2 autoreconf i automake autoconf configure m
  • Android Notifaction 从4.0到7.0

    Android Notifaction 从4 0到7 0 图1 4 0 通知样式 图2 5 0 6 0 通知样式 图3 7 0 通知样式 兼容 这么多版本 如何兼容 没关系 交给 android support v7 app Notific
  • 几种RS485隔离通讯的方案介绍

    RS485具有抗干扰能力强 成本低等特点 广泛应用于工业智能仪表 通讯设备等各个领域 RS485电路可以分为非隔离型和隔离型 隔离型电路是在非隔离型电路的基础上增加隔离性能 使得电路具有更强的抗干扰性和系统稳定性 今天介绍几种隔离RS485
  • 说说我亲历的京东发展史

    最近好久没有写博客了 响应CSDN的号召 有奖征文 我亲历的京东发展史 所以我也来从个人观点来说说对京东的一些看法 京东从某种程度上来说 确实改变了我们的生活 使我们生活变得更加丰富多彩 通过阅读 京东技术解密 看到京东的愿景是 让生活变得
  • 依据ASCII排序:有关map.entrySet()的一些心得

    List