需要一个算法来解决这个排序问题!

时间:2010-06-02 10:21:21

标签: algorithm

012 @ TEST1 524 @ TEST2 ABC @ TEST3 AB @ TEST4 53 @ TEST5 @ TEST6

我想对以下数据进行排序 最终输出: 根据“@”之前的数据排序 数字应该在alpha之前出现

@ TEST6 012 @ TEST1 53 @ TEST5 524 @ TEST2 AB @ TEST4 ABC @ TEST3

我想在java中实现这个...帮帮我

2 个答案:

答案 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

上使用字典排序