Java 我的比较器应该是什么类型的

Java 我的比较器应该是什么类型的,java,comparator,Java,Comparator,这是我想根据条目值中的整数进行比较的列表 List<Map.Entry<OfficerRank, Integer>> lst = new ArrayList<Map.Entry<OfficerRank, Integer>>(); lst.addAll(mp.entrySet()); Collections.sort(lst,new CompareRank<Map.Entry<OfficerRank, Integer>>())

这是我想根据条目值中的整数进行比较的
列表

List<Map.Entry<OfficerRank, Integer>> lst = new ArrayList<Map.Entry<OfficerRank, Integer>>();
lst.addAll(mp.entrySet());
Collections.sort(lst,new CompareRank<Map.Entry<OfficerRank, Integer>>());
List lst=new ArrayList();
lst.addAll(mp.entrySet());
Collections.sort(lst,newcomparerank());
这是我的比较器代码:

public class CompareRank<Map.Entry<OfficerRank,Integer>> implements Comparator<Map.Entry<OfficerRank, Integer>>{
  @Override
  public int compare(Map.Entry<OfficerRank,Integer> arg0, Map.Entry<OfficerRank,Integer> arg1) {
    int val1 = arg0.getValue();
    int val2 = arg1.getValue();
    return Integer.compare(val2,val1);
  }
public类CompareRank实现Comparator{
@凌驾
公共整数比较(Map.Entry arg0,Map.Entry arg1){
int val1=arg0.getValue();
int val2=arg1.getValue();
返回整数。比较(val2,val1);
}
我的问题是,根据Eclipse,我不能使用
Map.Entry
作为类型

谢谢

请同样使用:

public class CompareRank implements Comparator<Map.Entry<Integer, Integer>>{

    @Override
    public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
        // TODO Auto-generated method stub
        return 0;
    }
}
public类CompareRank实现Comparator{
@凌驾
公共整数比较(条目o1、条目o2){
//TODO自动生成的方法存根
返回0;
}
}
这里,为了方便起见,我选择了
条目,

但是您可以继续使用
条目

请同样使用:

public class CompareRank implements Comparator<Map.Entry<Integer, Integer>>{

    @Override
    public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
        // TODO Auto-generated method stub
        return 0;
    }
}
public类CompareRank实现Comparator{
@凌驾
公共整数比较(条目o1、条目o2){
//TODO自动生成的方法存根
返回0;
}
}
这里,为了方便起见,我选择了
条目,


但是您可以继续使用
条目

正如您现在所拥有的那样,
CompareRank
的类型参数是别名,而不是实际类型

您不必为
CompareRank
类定义类型参数,只需指出
Comparator
必须处理的实际类型:

import static java.util.Map.Entry;

public class CompareRank implements Comparator<Entry<OfficerRank, Integer>>{
  @Override
  public int compare(Entry<OfficerRank,Integer> arg0, Entry<OfficerRank,Integer> arg1) {
    int val1 = arg0.getValue();
    int val2 = arg1.getValue();
    return Integer.compare(val2,val1);
}

正如您现在看到的,
CompareRank
的类型参数是别名,而不是实际类型

您不必为
CompareRank
类定义类型参数,只需指出
Comparator
必须处理的实际类型:

import static java.util.Map.Entry;

public class CompareRank implements Comparator<Entry<OfficerRank, Integer>>{
  @Override
  public int compare(Entry<OfficerRank,Integer> arg0, Entry<OfficerRank,Integer> arg1) {
    int val1 = arg0.getValue();
    int val2 = arg1.getValue();
    return Integer.compare(val2,val1);
}

可能您使用了错误的Map.Entry。如果您想将其用作元组,最好定义一个助手“tuple”类:


可能您使用了错误的Map.Entry。如果您想将其用作元组,最好定义一个助手“tuple”类:


请显示完整的错误消息。谢谢。请显示完整的错误消息。谢谢。
Tuple<OfficeRank,Integer> entry = ...
public class OfficeRankValue {
    Integer whateverTheIntegerIs;
    OfficeRank officeRank;
}