使用空格对字符串值进行排序

时间:2012-11-01 23:18:21

标签: java string sorting

我正在研究JAVA,我对排序字符串有疑问。

在String ArrayList中 我们有字符串值STRUCTURE是“0”+“”+“某些字符串”

例如,

     | String
     | 0 AA
     | 1 BB
     | 2 AA
     | 3 AA
     | 4 CC
     | 5 BB

当我们对它进行排序时,结果应为

     | String 
     | 0 AA
     | 2 AA
     | 3 AA
     | 1 BB
     | 5 BB
     | 4 CC

如何使用“数字字符串”+“”+“字符串”

对字符串进行排序

感谢

更新

我测试了代号 1 AA
2 AA
3 BBB
4 CC
5 BBB
6 AA
7 BBB
8 CC
9 ZZZ
10 QQQ

我得到了

0 AA

1 AA

5 AA

4 BBB

2 BBB

6 BBB

3 CC

7 CC

9 QQQ

8 ZZZ

3 个答案:

答案 0 :(得分:7)

扩展Comparator解决方案(这应该是解决此问题的方法):

Collections.sort(yourList, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        String[] split1 = s1.split(" ");
        String[] split2 = s2.split(" ");

        int n = split1[1].compareTo(split2[1]);

        if (n == 0) {
            return Integer.valueOf(split1[0]).compareTo(
                                  Integer.valueOf(split2[0]));
        }

        return n;
    }
});

答案 1 :(得分:4)

使用Collections.sort(List, Comparator)。您需要提供自己的Comparator实施,以实现您的排序要求。

答案 2 :(得分:-4)

我在编码时真的考虑了空间和时间的复杂性。我不是很确定足够有效,但它会给你带来帮助。

  List<String> l = new ArrayList<>();

        l.add("0 CC");
        l.add("1 BB");
        l.add("2 AA");
        l.add("3 AA");

    String str="";
    for(String s: l){
        str+=s+",";
    }
    String[] sArr = str.split(",");
    String temp="";
    for(int i=0; i<sArr.length;i++) {
        for(int j= i+1; j<sArr.length;j++){
            if(sArr[i].split("\\s")[1].compareToIgnoreCase(sArr[j].split("\\s")[1])>0){
                temp= sArr[j];
                sArr[j]= sArr[i];
                sArr[i]=temp;
            }
        }
    }
    for(String g: sArr){
        System.out.println(g);
    }

output:
2 AA
3 AA
1 BB
0 CC
相关问题