java - 如何创建自定义比较器来对编号系统进行排序

标签 java sorting comparator

这是我目前的代码:

package Demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Demo {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<String>();

        list.add("3.3.x");
        list.add("1.2.x");
        list.add("2.3.x");

        VersionComparator x = new VersionComparator();

        Collections.sort(list, x );

        for(String str : list)
            System.out.println(str);

    }

    static class VersionComparator implements Comparator {
        public int compare(String str1, String str2) {

            String firstNumberStringOne = str1.split(".")[0]; 
            String firstNumberStringTwo = str2.split(".")[0];  
            String secondNumberStringOne = str1.split(".")[1]; 
            String secondNumberStringTwo = str2.split(".")[1];  

            return;
        }

        @Override
        public int compare(Object o1, Object o2) {
            // TODO Auto-generated method stub
            return 0;
        }
    }
}

我想按出现在句点之前的第一个数字对列表中的项目进行排序。如果这两个数字相等,则转到第二个数字并比较这些数字。如果相等就返回它们。

我不确定如何使用比较器。我试图实现它,但编译器提示我需要在第二个比较方法中添加覆盖。我也不知道如何根据返回方式进行比较。我知道如果它等于则返回 0,小于则返回 -1 大于 1。但是在编码方面我不知道程序如何知道如何对其进行排序。

最佳答案

您的 VersionComparator 类正在实现 Comparator 接口(interface)的原始形式,其中 compare 方法将采用 2 个 Object 而不是 2 个 String

通过提供 String 作为类型参数来实现接口(interface)。然后编译器将识别您的 compare 方法,将 String 作为接口(interface)的正确实现作为参数。您不需要采用 Objectcompare 方法。

static class VersionComparator implements Comparator<String> {

您当然需要在 compare method 中实现比较逻辑,如果 str1 比较小于、等于或大于 str2,则返回小于 0、0 或大于 0 的 int您的自定义排序顺序。

关于java - 如何创建自定义比较器来对编号系统进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952736/

相关文章:

java - 构造函数声明中存在语法错误 : '{' expected

java - 获取 DateTime dayOfWeek/dayOfMonth 作为字符串

java - 使用比较器对对象的 ArrayList 进行排序,代码无法访问

java - 自定义比较器,用于对州、县和邮政编码列表进行排序

java - 如何在应用程序部署后立即打开所有连接?

java - 如何在 Android 中使用来自 WebView 的身份验证信息发出 HTTP 请求?

c# - 按字符串排序列表以查找较新版本 C#

django - 模型管理排序?

c - 如何合并N个文件

java - 比较器和比较器