weilin287297311 2012-09-04 16:17
浏览 190
已采纳

排序 数组 String[]

String str = "bb:20;aa:18;cc:19;af:17;dd:21;cc:18;dd:24";
String[] xinxi1 = str.split(";");
Arrays.sort(xinxi1);
for(String s : xinxi1)

{

System.out.println(s.split(":")[0]+"="+s.split(":")[1]);

}

输出结果:aa=18
af=17
bb=20
cc=18
cc=19
dd=21
dd=24

请问各位大侠怎么让他输出英文字母相同时数字按降序排列
如:aa=18
af=17
bb=20
cc=19
cc=18
dd=24
dd=21

  • 写回答

4条回答 默认 最新

  • game4daniel 2012-09-04 17:03
    关注

    [code="java"]
    String str = "bb:20;aa:18;cc:19;af:17;dd:21;cc:18;dd:24;ee:5;ee:3;ee:3242";
    String[] xinxi1 = str.split(";", -1);
    // 只能自己写比较器了
    Arrays.sort(xinxi1, new Comparator() {
    public int compare(String o1, String o2) {
    // 前3个判空
    if (o1 == o2) {
    return 0;
    }
    if (o1 == null) {
    return 1;
    }
    if (o2 == null) {
    return -1;
    }
    // 如果key不一样,直接返回key的比较顺序
    String[] info1 = o1.split(":", 2);
    String[] info2 = o2.split(":", 2);
    if (!info1[0].equals(info2[0])) {
    return info1[0].compareTo(info2[0]);
    }
    // 这里有不一样的地方 a:5 a:15,谁排在前,注释掉的地方,是a:5排在前
    int i1 = Integer.parseInt(info1[1]);
    int i2 = Integer.parseInt(info2[1]);
    return i2 - i1;

                // return info2[1].compareTo(info1[1]);
            }
        });
        for (String string : xinxi1) {
            System.out.println(string);
        }[/code]
    

    [quote]
    aa:18
    af:17
    bb:20
    cc:19
    cc:18
    dd:24
    dd:21
    ee:3242
    ee:5
    ee:3
    [/quote]

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

报告相同问题?

悬赏问题

  • ¥300 开发的系统遭到无良商家的破解,请问如何防止再次发生,并追回损失
  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败