java - 如何比较方法与比较类型的附加功能?

标签 java comparator

如果对象属于参数中提供的特定类型,我想创建一个带有附加类型参数的比较器,以便为属性添加更多优先级。例如,

new Comparator<Person>(){ 
    @override
    public int compare(Person p1, Person p2, Person.Type type, float weight)
    {
        float score1 = p1.getScore();
        float score2 = p2.getScore();
        if(p1.getType==type)
            score1 = weight * score1;
        if(p2.getType==type)
            score2 = weight * score2;
        return Double.compare(score1,score2);
    }
}

我想找到一种方法来实现当对象是特定类型时的这种行为。

最佳答案

你的 compare 方法不再实现 Comparator 因为有额外的参数。

要提供这些值,请将构造函数中的这些值传递给此 Comparator 类。

public class PersonComparator implements Comparator<Person>
{
    private Person.Type type;
    private float weight;
    public PersonComparator(Person.Type type, float weight) {
       this.type = type;
       this.weight = weight;
    }
}

然后您可以使用适当的签名实现您的compare 方法,方法主体将使用您需要的值。

public int compare(Person person1, Person person2)

关于java - 如何比较方法与比较类型的附加功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707594/

相关文章:

java - 从下载链接发现文件名和扩展名

java - Google 联系人 - java.lang.NoSuchMethodError : com. google.common.collect.ImmutableSet.of([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;

android - 在 Android 中使用 Glide 和 Kotlin 在 ScrollView/RecyclerView 中显示 n 个图像

scala - 覆盖 `Comparison method violates its general contract` 异常

java - Comparator.comparing 使用嵌套对象的字段对列表进行排序

java - 在Java中,如何检查时间是否在两个日期对象之内

java - 如何通过 hibernate 从多表查询中获取数据?

c++ - 删除重复项而不四舍五入,C++

java - 是否可以使用 Comparator.comparingInt 链按两个字段以相反的自然顺序对对象进行排序

java - 如何在 spring @feignclient 配置中设置自定义最大连接池大小