gpt4 book ai didi

java - 对自定义对象的 ArrayList 进行排序并在 Java 中重新排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:46 24 4
gpt4 key购买 nike

我有一个 CustomObject 的 ArrayList,我的对象只是由两个值 x 和 y 组成

MyObject = (double)x && (double)y 

我想做的是:

  1. 从数组中删除重复项:简单地删除重复对象,如果对象具有相同的 x,则保留较高 y 的对象。
  2. 根据 x 值重新排序列表(x 是时间,y 是一个因素)

我曾尝试使用 Collections.sort 对我的数组重新排序并使用 set 删除重复项,但没有任何效果。

Collections.sort(listPoints, new Comparator<MyObject>(){
@Override
public int compare(MyObject lhs, MyObject rhs) {
return Double.compare(lhs.y, rhs.y);
}
});

Collections.sort(listPoints, new Comparator< MyObject >(){
@Override
public int compare(MyObject lhs, MyObject rhs) {
return Double.compare(lhs.x, rhs.x);
}
});

最佳答案

用不同的比较器对列表进行两次排序是行不通的。您需要在同一个比较器中比较 x 和 y。

public int compare(MyObject lhs, MyObject rhs) {
int result = Double.compare(lhs.y, rhs.y);
if (result != 0) return result;
return Double.compare(lhs.x, rhs.x);
}

如果 MyObject 正确实现了 equals() 和 hashCode() 方法,则使用集合删除重复项将起作用。

关于java - 对自定义对象的 ArrayList 进行排序并在 Java 中重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634428/

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