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

问题描述:

我正在学习JAVA,并且对排序字符串有疑问。使用空格对字符串值进行排序

在字符串的ArrayList 我们有字符串值结构是 “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 

我该如何使用“num BER字符串” + “” + “字符串”

感谢

更新:

我测试代码吹塑与 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

+0

OP,请未接受我的答案,并接受ARS张贴其高度的答案高效然后我的,这样我可以删除我的答案。:) – PermGenError

我在编码时确实考虑了空间和时间的复杂性。我并不确定它是否足够高效,但它会给你带来意想不到的效果。

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 
+2

这是一个非常糟糕的解决方案。事实上,我怀疑它适用于所有情况! – Muel

+0

@Muel它确实为给定的输入工作。你可以建议任何其他的解决方案??? idint真的考虑空间和时间的复杂性,而编码它 – PermGenError

+0

可以downvoters请评论 – PermGenError

使用Collections.sort(List, Comparator)。你需要提供你自己的Comparator实现,它实现你的分类需求。

扩大于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; 
    } 
});