gpt4 book ai didi

java - 如何使用比较器实现Treemap?

转载 作者:行者123 更新时间:2023-12-01 06:49:09 29 4
gpt4 key购买 nike

我在这个问题中遇到的错误已经解决,并写在下面的答案部分。

问题是 TreeMap 的以下定义引发编译器错误,我想知道原因。

Comparator<Student> comparator=new Comparator<Student>() {

@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.roll<=o2.roll)
return -1;
else return 1;
}
};
TreeMap<Integer, Student> map=new TreeMap<>(comparator);

我不明白 Treemap 的这种实现是错误的原因。谁能帮我解释一下这里发生了什么吗?

最佳答案

compare() 需要处理三种情况:小于、大于和等于。当它们相等时,您需要返回 0

if (o1.roll == o2.roll) {
return 0;
}
else if (o1.roll < o2.roll) {
return -1;
}
else {
return 1;
}

Integer.compare(int x, int y)可以为您完成这一切:

public int compare(Student o1, Student o2) {
return Integer.compare(o1.roll, o2.roll);
}

在 Java 8 中,您可以在一行中创建整个比较器:

Map<Integer, Student> map = new TreeMap<>(Comparator.comparingInt(s -> s.roll));

关于java - 如何使用比较器实现Treemap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128689/

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