gpt4 book ai didi

java - 在 Java 中为 TreeMap 编写自定义排序时出现错误

转载 作者:行者123 更新时间:2023-12-01 21:17:38 24 4
gpt4 key购买 nike

下面是我的 Emp 类和 Mycomparator 类,它实现了 Comparator。两者都在同一个包中。我收到错误,因为构造函数 TreeMap(Mycomparator) 未定义。我是 Java 新手。请帮忙。

public class Emp {

String name;
int eid;

public Emp(String name, int eid){
this.name=name;
this.eid = eid;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Emp e1 = new Emp("shankar",333);
Emp e2 = new Emp("Ronaldo",222);
Emp e3 = new Emp("Messi",111);
TreeMap<Integer,Emp> e = new TreeMap<Integer,Emp>(new Mycomparator());
e.put(1, e1);
e.put(2, e2);
e.put(3, e3);

Set<Integer> ss = e.keySet();
for(Integer i:ss) {
Emp ee = (Emp) e.get(i);
System.out.println(i+"--------"+ee.eid+"======="+ee.name);
}
}
}

下面是我的类名 Mycomparator,它实现了 Comparator 接口(interface)。

public class Mycomparator  implements Comparator<Entry<Integer,Emp>> {

@Override
public int compare(Entry<Integer,Emp> arg0, Entry<Integer,Emp> arg1) {
Map.Entry<Integer,Emp> obj1 = arg0;
Map.Entry<Integer,Emp> obj2 = arg1;
Emp e1 = (Emp) obj1.getValue();
Emp e2 =(Emp) obj2.getValue();
return e1.name.compareTo(e2.name);
}
}
}

最佳答案

排序的Map排序,而不是按值排序,唯一可用的选项是按键排序(Integer),不是“条目”。如果您想按值排序,则需要编写自己的映射。我不知道有任何按值排序的库实现。

关于java - 在 Java 中为 TreeMap 编写自定义排序时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39687778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com