gpt4 book ai didi

java - 根据属性保留对象的 SortedSet

转载 作者:行者123 更新时间:2023-12-02 00:27:00 24 4
gpt4 key购买 nike

我有一个对象 Test,它有两个属性:double xdouble y。我想将这些对象添加到 SortedSet 中,使集合在 Test 的 x 上按 ASC 顺序排序。如果 Test 的两个实例具有相同的 x 值,我希望它们在集合中按 y 值排序。

我认为以下内容可以解决问题:

private SortedSet<Test> tests = new TreeSet<Test>(new Comparator<Test>() {

@Override
public int compare(Test o1, Test o2) {
if (o1.getXpos() < o2.getXpos()) {
return -1;
}
if (o1.getXpos() > o2.getXpos()) {
return 1;
}
if (o1.getXpos() == o2.getXpos()) {
if (o1.getYpos() < o2.getYpos()) {
return -1;
}
if (o1.getYpos() > o2.getYpos()) {
return 1;
}
if (o1.getYpos() == o2.getYpos()) {
return 0;
}
}
return 0;
}
});

相反,这对实际的 x 和 y 值进行排序;即

testA: x=200, y=200,

testB: x=200, y=400

插入测试后:

testA: x=200, y=200,

testB: x=400, y=200

而不是测试中的实例。

最佳答案

你的比较器是正确的。但是,如果将测试对象添加到集合中会更改其成员变量,例如,您会遇到更大的问题。 “测试B:x = 400,y = 200” ->“测试B:x = 200,y = 400”。我猜你的问题在于你没有包含的代码(也许是一个拙劣的构造函数?)。

关于java - 根据属性保留对象的 SortedSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797079/

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