gpt4 book ai didi

Java HashSet 使用指定的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:56 24 4
gpt4 key购买 nike

我有一个像这样的基本类“HistoryItem”:

public class HistoryItem
private Date startDate;
private Date endDate;
private Info info;
private String details;

@Override
public int hashCode() {
int hash = (startDate == null ? 0 : startDate.hashCode());
hash = hash * 31 + (endDate == null ? 0 : endDate.hashCode());
return hash;
}
}

我目前正在使用 HashSet 从 ArrayList 的 startDate 和 endDate 字段中删除重复项,它工作正常。

但是我还需要删除不同字段(信息和详细信息)上的重复项。

我的问题是这样的。
有没有办法指定 HashSet 将用来代替 hashCode() 的不同方法?像这样:

public int hashCode_2() {
int hash = (info == null ? 0 : info.hashCode());
hash = hash * 31 + (details == null ? 0 : details.hashCode());
return hash;
}

Set<HistoryItem> removeDups = new HashSet<HistoryItem>();
removeDups.setHashMethod(hashCode_2);

或者还有其他方法可以做到这一点吗?

最佳答案

您可以使用不同的 GetHashCode 实现围绕 HistoryItem 创建一个包装器类,然后围绕原始集合中的每个项目创建一个 HashSet 包装器。

关于Java HashSet 使用指定的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4576828/

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