java 如何从散列集中删除类对象?

f0brbegy  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(139)

我对编程很陌生,所以如果这是一个愚蠢的问题,我很抱歉..我如何从哈希集中删除一个对象?我试过使用.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()从我之前初始化的集合中删除一个penny对象。如果有人能帮助我,那将是非常感谢的。

mlmc2os5

mlmc2os51#

这不是Set的工作原理。
首先,将多个便士添加到一个集合中并不像你希望的那样工作

  • 如果X1 M1 N1 X具有适当的X1 M2 N1 X/X1 M3 N1 X实现,则在X1 M4 N1 X中将总是最多只有一便士,因为X1 M5 N1 X显然没有自变量,因此所有X1 M6 N1 X示例将必须被认为是相等的。
  • 如果Penny没有正确的equals/hashCode实作,则它不应该在Set中开始。只有当您有与集合中已经存在的完全相同的执行严修时,才能移除这样的Penny,因为该执行严修是唯一与其本身相等的执行严修。

最后,Set不支持根据其包含的示例类型进行删除。
你需要完全重新考虑你想要实现什么,以及你想要如何建模。可能不会使用Set

相关问题