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;
}