012 @ TEST1 524 @ TEST2 ABC @ TEST3 AB @ TEST4 53 @ TEST5 @ TEST6
我想对以下数据进行排序 最终输出: 根据“@”之前的数据排序 数字应该在alpha之前出现
@ TEST6 012 @ TEST1 53 @ TEST5 524 @ TEST2 AB @ TEST4 ABC @ TEST3
我想在java中实现这个...帮帮我
答案 0 :(得分:3)
List<String> stringList = Arrays.asList(new String[]{"012@TEST1", "524@TEST2","ABC@TEST3" ,"AB@TEST4" ,"53@TEST5","@TEST6"});
Collections.sort(stringList,new Comparator<String>(){
public int compare(String s1,String s2){
String c1,c2;
if (s1.split("@").length >1){c1 = s1.split("@")[0]}else{c1 = ""}
if (s2.split("@").length >1){c2 = s2.split("@")[0]}else{c2 = ""}
return c1.compare(c2);
}
});
或类似的东西,只需调整比较方法
答案 1 :(得分:0)
它是一个常规的字母数字字典排序,但<token>
首先获得优先权,因为遗憾地在@
表中,ASCII
得到了数字和大字母之间的堆叠。正如你在这里看到的那样:
http://www.asciitable.com/index/asciifull.gif
或者,您可以将数据存储在@
中,其中包含double-valued nodes
中@
左侧的数据,以及node1
中右侧的数据。 },并在node2