滴滴撕滴颩 2023-01-31 09:56 采纳率: 57.1%
浏览 52
已结题

两个字符串数组对象需要进行比较是否相等,怎么把两个字符串对象保持顺序一致进行比较?

两个字符串数组对象需要进行比较是否相等,怎么把两个字符串对象保持顺序一致进行比较?

A字符串对象:

[
    {
        "Field":"id",
        "Type":"int(11)",
        "Null":"NO",
        "Extra":"auto_increment",
        "Key":"PRI"
    },
    {
        "Field":"app_id",
        "Type":"varchar(8)",
        "Null":"YES",
        "Extra":"",
        "Key":""
    }
]

B字符串对象:

[
    {
        "Field":"id",
        "Type":"int(11)",
        "Null":"NO",
        "Key":"PRI",
        "Extra":"auto_increment"
    },
    {
        "Field":"app_id",
        "Type":"varchar(8)",
        "Null":"YES",
        "Key":"",
        "Extra":""
    }
]

A字符串对象和B字符串对象的Key和Extra键值顺序不一样,不能直接比较,怎么实现B的顺序和A的一样呢?

img

img

  • 写回答

5条回答 默认 最新

  • CL有毒 2023-01-31 11:26
    关注

    如果是希望最终比较字符串,可以先处理一下原字符串:重新按照一定规则排列对象的key,比如题主前面说的:

    要实现的效果就是将A和B的所有键都按字母顺序排序一遍,怎么实现?

    核心原理就是用TreeMap保证对象的key按照字典升序排列

    import com.alibaba.fastjson2.JSON;
    import com.alibaba.fastjson2.JSONArray;
    import com.alibaba.fastjson2.JSONObject;
    import com.alibaba.fastjson2.JSONWriter;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.TreeMap;
    
    public class Main {
    
        public static void main(String[] args) {
            String A = "[\n" +
                    "    {\n" +
                    "        \"Field\":\"id\",\n" +
                    "        \"Type\":\"int(11)\",\n" +
                    "        \"Null\":\"NO\",\n" +
                    "        \"Extra\":\"auto_increment\",\n" +
                    "        \"Key\":\"PRI\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"Field\":\"app_id\",\n" +
                    "        \"Type\":\"varchar(8)\",\n" +
                    "        \"Null\":\"YES\",\n" +
                    "        \"Extra\":\"\",\n" +
                    "        \"Key\":\"\"\n" +
                    "    }\n" +
                    "]";
            String B = "[\n" +
                    "    {\n" +
                    "        \"Field\":\"id\",\n" +
                    "        \"Type\":\"int(11)\",\n" +
                    "        \"Null\":\"NO\",\n" +
                    "        \"Key\":\"PRI\",\n" +
                    "        \"Extra\":\"auto_increment\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "        \"Field\":\"app_id\",\n" +
                    "        \"Type\":\"varchar(8)\",\n" +
                    "        \"Null\":\"YES\",\n" +
                    "        \"Key\":\"\",\n" +
                    "        \"Extra\":\"\"\n" +
                    "    }\n" +
                    "]";
    
            String sortedKeyA = sortedKeyArray(JSON.parseArray(A));
            String sortedKeyB = sortedKeyArray(JSON.parseArray(B));
    
            System.out.println(sortedKeyA);
            System.out.println("---------------------------");
            System.out.println(sortedKeyB);
    
        }
    
        private static String sortedKeyArray(JSONArray array) {
            List<Map<String, Object>> list = new ArrayList<>();
            for (Object o : array) {
                JSONObject json = JSON.parseObject(JSON.toJSONString(o));
                Map<String, Object> sortedKeyMap = new TreeMap<>(json);
                list.add(sortedKeyMap);
            }
            return JSON.toJSONString(list, JSONWriter.Feature.PrettyFormat);
        }
    
    }
    

    输出结果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月8日
  • 已采纳回答 1月31日
  • 修改了问题 1月31日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里