【问题标题】:Collections.max() Improper ArgumentsCollections.max() 不正确的参数
【发布时间】:2023-04-11 06:29:01
【问题描述】:

我只是想找到“军官”列表的最大值。我正在处理的任务的规范不允许我使军官具有可比性,因此我使用比较器来比较它们。

但是,编译器抱怨我的参数类型。任何人都可以看到有什么问题吗? (不用担心退货......我还没有这样做。)

在下面的片段之外,officer 是一个已经初始化的 List

Collections.max(officers, new Comparator<Officer>()
    {
        public int compare( Officer a, Officer b )
        {
           return -1; //will do after
        }
    }
);

任何建议将不胜感激!

【问题讨论】:

  • 我添加了“作业”标签...
  • 确切的错误信息是什么?
  • Collection 类型中的方法 max(Collection extends AnyType>, Comparator super AnyType>) 不适用于参数 (List, new Comparator(){ })
  • 我很确定它只是在抱怨我的通用定义。但是,我找不到我的错误。
  • 原来我导入了错误的 Collections 包。我们从教科书中获得了一个自定义的 Collections 包来使用(我完全忘记了),所以它从那个包中提取了方法签名。现在一切都好。谢谢大家:)

标签: java collections max comparator


【解决方案1】:

这编译得很好。这是ideone.com demo

import java.util.*;

class Officer {
}

public class Test {

    public static void main(String[] args) {

        List<Officer> officers = new ArrayList<Officer>();

        Collections.max(officers, new Comparator<Officer>()
                {
                    public int compare( Officer a, Officer b )
                    {
                       return -1; //will do after
                    }
                }
            );
    }
}

所以,您发布的代码没有问题。一定是其他地方出了问题。

【讨论】:

  • 检查原始帖子的 cmets...chit。一场野鹅追逐。
猜你喜欢
  • 2020-03-13
  • 2021-01-11
  • 1970-01-01
  • 2011-06-23
  • 2019-05-23
  • 2015-05-27
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多