使用空格对字符串值进行排序
我正在学习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
我在编码时确实考虑了空间和时间的复杂性。我并不确定它是否足够高效,但它会给你带来意想不到的效果。
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
这是一个非常糟糕的解决方案。事实上,我怀疑它适用于所有情况! – Muel
@Muel它确实为给定的输入工作。你可以建议任何其他的解决方案??? idint真的考虑空间和时间的复杂性,而编码它 – PermGenError
可以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;
}
});
OP,请未接受我的答案,并接受ARS张贴其高度的答案高效然后我的,这样我可以删除我的答案。:) – PermGenError