java - java中的自定义字符串排序

标签 java sorting

我用 java 编写了一个 java 程序来按字母顺序对字符串进行排序。问题是当它对具有罗马数字的字符串进行排序时,它会将其视为字符并相应地进行排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class SampleCustomSortApp
{
    @SuppressWarnings("unchecked")
    public static void main(String[] args)
    {
        ArrayList<String> titles =new ArrayList();
        titles.add("java");
        titles.add("J-IV");
        titles.add("A-V");
        titles.add("J-V");
        titles.add("J-IX");
        titles.add("J-XX");
        titles.add("J-X");
        titles.add("J-I");
        titles.add("J-II");

        titles.add("datawarehouse");
        titles.add("oracledba");
        System.out.println("Before Sorting Elements Are :"+titles+"\n");
        Collections.sort(titles, new MyCustomCompator());
        System.out.println("After Sorting Elements Are :"+titles);
    }
}
class MyCustomCompator implements Comparator
{
    public int compare(Object s1,Object s2)
    {
        String one = (String)s1;
        String two = (String)s2;
        /* for ascending order */
        if(one.compareTo(two)>0){
            return 1;
        }else{
            return -1;
        }
    }
}

实际输出

Before Sorting Elements Are :[java, J-IV, A-V, J-V, J-IX, J-XX, J-X, J-I, J-II, datawarehouse, oracledba]

After Sorting Elements Are :[A-V, J-I, J-II, J-IV, J-IX, J-V, J-X, J-XX, datawarehouse, java, oracledba]

期望的输出

Before Sorting Elements Are :[java, J-IV, A-V, J-V, J-IX, J-XX, J-X, J-I, J-II, datawarehouse, oracledba]

After Sorting Elements Are :[A-V, J-I, J-II, J-IV,  J-V,J-IX, J-X, J-XX, datawarehouse, java, oracledba]

我应该使用正则表达式来比较字符串吗?有人能告诉我解决方案吗

最佳答案

您肯定需要自己的 Comparator 来正确解析罗马数字。解析的工作(自然)已经解决了,所以你只需要将你的字符串分成字母和数字部分。参见 here以罗马数字解析代码为例。

关于java - java中的自定义字符串排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792941/

相关文章:

java - 多窗口错误androidmanifest.xml

java - JSP 页面上的“添加”和“删除”按钮不起作用

arrays - 将已排序的数组恢复到其原始顺序

ruby - 如何按不同顺序的多个条件进行排序?

java - 如何让所有主要方法显示执行时间

java - SASL 握手期间出现 METADATA 类型的意外 Kafka 请求

java - 使用 Jquery 上传 Excel 文件

python - 如何对组进行排序,使第一行中的数字最大,第二行中的数字最小,第三行中的数字第二大,依此类推

algorithm - 为什么在分布计数排序算法中从右到左处理输入数组更好?

javascript - 如何根据与单词的匹配程度对二维数组进行排序?