gpt4 book ai didi

java - 基于不同 equals/hashcode 的不同 Set 集合

转载 作者:行者123 更新时间:2023-11-30 09:00:14 25 4
gpt4 key购买 nike

我想有两个 Set 集合,根据同一类对象的 equals/hashCode 的不同实现来保存唯一的对象。

例如,一个 Set 将只用于具有不同时间戳的元素,equals 应该返回 a.timestamp!=b.timestamp,但另一组可能仅适用于具有不同名称的元素,例如 a.name!=b.name

有没有简单的方法可以实现这一点?如何为每个不同的 Set 自定义 equals?

最佳答案

您的建议听起来像是对 equals 方法和 Set 接口(interface)的滥用。

您的用例定义了两个类别,给定类型的对象可以按这两个类别(时间戳和名称)进行分组,并且您希望有两个集合,每个集合最多包含每个类别的一个实例。

要做到这一点,使用助手 Sets 会更有意义:

Set<String> timestamps;
Set<String> names;

然后您可以向这些集合添加名称和时间戳,并使用它们来检查是否应将对象添加到目标集合(不一定是集合)。

例如:

List<SomeClass> timestampCategories = new ArrayList<SomeClass>();
List<SomeClass> nameCategories = new ArrayList<SomeClass>();
for (SomeClass object : inputCollection) {
if (!timestamps.contains(object.getTimestamp()) {
timestamps.add(object.getTimestamp());
timestampCategories.add(object);
}
if (!names.contains(object.getName()) {
names.add(object.getName());
nameCategories.add(object);
}
}

关于java - 基于不同 equals/hashcode 的不同 Set 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882086/

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