Algorithm 这个排序问题需要一个算法!

Algorithm 这个排序问题需要一个算法!,algorithm,Algorithm,012@TEST1 524@TEST2 ABC@TEST3 AB@TEST4 53@TEST5 @测试6 我想对以下数据进行排序,以便 最终输出: 根据“@”之前的数据排序 数字应该在alpha之前 @测试6 012@TEST1 53@TEST5 524@TEST2 AB@TEST4 ABC@TEST3 我想在java中实现这一点…请帮助我List stringList=Arrays.asList(新字符串[]{”012@TEST1", "524@TEST2","ABC@TEST3" ,"AB@

012@TEST1 524@TEST2 ABC@TEST3 AB@TEST4 53@TEST5 @测试6

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

@测试6 012@TEST1 53@TEST5 524@TEST2 AB@TEST4 ABC@TEST3

我想在java中实现这一点…请帮助我

List stringList=Arrays.asList(新字符串[]{”012@TEST1", "524@TEST2","ABC@TEST3" ,"AB@TEST4" ,"53@TEST5“,“@TEST6”});
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);
        }
});
Collections.sort(stringList,newcomparator(){ 公共整数比较(字符串s1,字符串s2){ 字符串c1、c2; 如果(s1.split(“@”).length>1){c1=s1.split(“@”)[0]}否则{c1=”“} 如果(s2.split(“@”).length>1){c2=s2.split(“@”)[0]}否则{c2=”“} 返回c1。比较(c2); } });

或者类似的,只需调整比较方法

它是一个常规的字母数字字典排序,但是
@
首先获得优先级,因为不幸的是在
ASCII
表中,
@
在和数字和大字母之间得到了堆栈。正如你在这里看到的:


或者,您可以将数据存储在
双值节点
中,该节点包含
节点1
@
左侧的数据,以及
节点2
中右侧的数据,并在
节点1上使用字典排序

我无法理解代码。请任何人提供其他方法或帮助我理解代码。谢谢您是否正在寻找伪代码算法或特定语言的实现(可能使用该平台提供的库)?这个例子看起来像是Java使用了平台库中的排序例程?