【问题标题】:How do you remove a class object from a hashset?如何从哈希集中删除类对象?
【发布时间】:2022-12-11 08:46:57
【问题描述】:

我对编程很陌生,所以如果这是一个愚蠢的问题,我深表歉意。我如何从哈希集中删除对象?我试过使用 .remove() 但我做错了什么因为它对对象不起作用

public class Pocket
{
    private HashSet<Penny> myset;
    
    public Pocket(int PocketSize)
    {
        myset = new HashSet<Penny>();
        while (PocketSize > myset.size()){
            myset.add(new Penny());
        }
    public int pennyCount()
    {
        return myset.size();
        
    }
    public Penny removePenny(){
        if (myset.size() > 0){
            myset.remove(Penny);
        } else{
            return null;
}
    }
    

我希望方法 removePenny() 从我之前初始化的集合中删除一个便士对象。如果有人可以提供帮助,那将非常感谢。

【问题讨论】:

  • 您使用 remove() 删除一个具体的目的。由于您所有的 Penny 对象似乎都是等效的,所以我不确定您为什么要使用 Set。可以有一个柜台。
  • 您的 remove 方法中不需要 if,只需调用该方法即可。但是你需要返回一些东西,在那里返回一个Penny是没有意义的。

标签: java hashset


【解决方案1】:

这不是Sets 的工作方式。

首先,将多个便士添加到一个集合中并不能按照您想要的方式工作

  • 如果Penny有正确的equals/hashCode实现,那么Set中最多只有一分钱
  • 如果 Penny 没有正确的 equals / hashCode 实现,那么它不应该以 Set 开头。如果集合中已有完全相同的实例,则只能删除这样的 Penny,因为该实例是唯一与自身相等的实例。

最后Sets 不支持根据其包含的实例类型进行删除。

您需要完全重新考虑您要实现的目标以及您希望如何对其进行建模。可能没有使用 Set

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2022-01-07
    • 2011-05-29
    • 2012-04-19
    相关资源
    最近更新 更多