gpt4 book ai didi

java - 给定一组具有 2 个值的对象。根据第一个值对集合进行排序,然后根据第二个值对集合进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:25 24 4
gpt4 key购买 nike

例如:

{2,3},{1,2},(2,2},{3,1},{2,1} to {1,2},{2,1},{2,2},{2,3},{3,1}

这是我的想法:

对第一列值进行合并排序。遍历集合以查看第一列中是否有任何重复值。如果有,将它们排入列表。

在第二列对这个列表进行合并排序,然后将它们集成到主集中。虽然看起来确实可行,但似乎过于复杂。这应该在 O(NlogN) 中运行,所以如果有人能想到一个更快/相同复杂度的算法并且更简单,请发布它!

谢谢!

最佳答案

简单地实现一个 Comparator<T> 它通过首先比较第一个字段来比较您的类型的任何两个对象,然后如果第一个字段相等则移动到第二个字段。然后您可以将集合复制到列表中,调用 Collections.sort并给它列表和你的比较器。无需自己实现排序。

比较器是这样的:

public class TwoFieldComparator implements Comparator<Foo>
{
public int compare(Foo first, Foo second)
{
// TODO: null checks
int firstComparison = Integer.compare(first.x, second.x);
return firstComparison != 0 ? firstComparison
: Integer.compare(first.y, second.y);
}
}

或者,您可以让您的类实现 Comparable<T>以同样的方式。

关于java - 给定一组具有 2 个值的对象。根据第一个值对集合进行排序,然后根据第二个值对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521726/

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