gpt4 book ai didi

java - 如何对单个指定成员变量使用compareTo()

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

请有人建议解决以下问题的最佳解决方案(这是我正在尝试编写的程序的一部分):

我有一个带有成员变量的类 Foo 和另一个扩展 Foo 的类 Bar。 Bar 添加了额外的成员变量。 Bar 对象存储在一个集合中,因此我想通过它们的任何成员变量对这些对象进行排序。

我考虑使用包含类成员变量的枚举类型,这些类可以作为参数传递给compareTo()方法,但由于枚举类型是隐式静态的,我无法为Bar或任何其他类的成员变量添加参数这可能会扩展我想要比较的 Foo 。例如,我想通过成员变量“myVar”比较两个 Bar 类,我会调用类似 bar1.compareTo(bar2, MyEnum.MYVAR) 的内容,并且这些类将与它们的 myVar 值进行比较。我想我可能只需要创建单独的方法来按每个成员变量排序,但想使用compareTo(),因为Java集合使用它来自动对其项目进行排序(我相信)。

这是我可以清楚地描述问题的,但我可能会以完全错误的方式实现这一目标。任何指示将不胜感激。

编辑 - 这与在 Windows 资源管理器窗口中按不同属性(即修改日期、文件名、大小等)对列进行排序的行为类似。

最佳答案

你最好使用 Comparator相反,封装这个特定的比较逻辑。您可以进行尽可能多的 Comparator 对象进行比较,或者按照建议,使用 Comparator 根据确定的字段进行比较。

如果您想要有多个比较器还是只有一个比较器,这取决于您,但如果您想基于多个字段进行复杂的比较,我建议您为此创建一个特定的比较器。

关于java - 如何对单个指定成员变量使用compareTo(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770295/

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