Java MultiSet类中的add/remove/equals/string方法存在问题

Java MultiSet类中的add/remove/equals/string方法存在问题,java,multiset,Java,Multiset,这是我的班级: public class MultiSet<E> extends AbstractCollection<E> { private int size = 0; private Map<E, Integer> values = new HashMap<E, Integer>(); public MultiSet() { } public MultiSet(Collection<

这是我的班级:

public class MultiSet<E> extends AbstractCollection<E>
{
    private int size = 0;
    private Map<E, Integer> values = new HashMap<E, Integer>();

    public MultiSet()
    {

    }

    public MultiSet(Collection<E> c)
    {
        addAll(c);
    }

    @Override
    public boolean add(E o)
    {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean remove(Object o)
    {
        throw new UnsupportedOperationException();
    }

    public Iterator<E> iterator()
    {
        return new Iterator<E>()
        {
            private Iterator<E> iterator = values.keySet().iterator();
            private int remaining = 0;
            private E current = null;

            public boolean hasNext()
            {
            return remaining > 0 || iterator.hasNext();
            }

            public E next()
            {
                if (remaining == 0)
                {
                    remaining = values.get(current);
                }
                remaining--;
                return current;
            }
            public void remove()
            {
                throw new UnsupportedOperationException();
            }
        };
    }

        public boolean equals(Object object)
        {
            if (this == object) return true;
            if (this == null) return false;
            if (this.getClass() != object.getClass()) return false;
            MultiSet<E> o = (MultiSet<E>) object;
            return o.values.equals(values);
        }


        public int hashCode()
        {
            return values.hashCode()*163 + new Integer(size).hashCode()*389;
        }

        public String toString()
        {
            String res = "";
            for (E e : values.keySet());
                    //res = ???;
            return getClass().getName() + res;
        }

        public int size()
        {
            return size;
        }
    }
有一个从对象到多集的
未选中强制转换
有什么想法吗

另外,在我的
toString
方法中,我不完全确定如何定义“res”

谢谢, //克里斯

用这个代替:

MultiSet<?> o = (MultiSet<?>) object;
MultiSet o=(MultiSet)对象;

这是必要的,因为泛型是如何在java中实现的。

出于兴趣,您希望
this==null
如何计算为true?我猜你的意思是
object==null
。那是个愚蠢的错误。谢谢尽管如此,我仍然收到相同的错误消息:/i我认为我的添加/删除方法正在工作。但是我的字符串toString仍然丢失。谁能看看它来帮助我吗?非常感谢。这将在equals中解决错误消息。你对add/remove/string方法有什么评论吗?@Chris-你对这些方法有什么具体的问题?
MultiSet<?> o = (MultiSet<?>) object;