如何从Hashset中删除和返回一个对象?

时间:2014-12-02 02:36:16

标签: java hashset bluej

我有一个已经填充了Penny对象的Hashset,我想创建一个方法从HashSet中删除其中一个Penny对象并返回它。这是我创建的方法,但它不起作用,因为我收到错误消息。谁能向我解释这样做的正确方法

public Penny removePenny(){

    if(penniesSet.size()<= 0){
        return null;
    }
    else 
        penniesSet.remove(Penny)

    return penniesSet.get(Penny)
}

3 个答案:

答案 0 :(得分:1)

您正在将类型Penny传递给remove方法。你应该传递一个对象。

至于get方法,你应该读到这个: Why doesn't java.util.HashSet have a get(Object o) method?

此外,如果Hashset没有正确的hashCode()方法,那么在Penny中查找对象时可能导致问题的典型问题就是Penny

删除这样的任意{{1}}可能与您首先尝试做的不完全相同。如果你要删除添加的最后一个(称为从堆栈中弹出),你可能想要研究使用different collection

答案 1 :(得分:1)

penniesSet.remove(Penny)penniesSet.get(Penny)不起作用,因为Penny是类名,而不是值。如果您想要从集合中删除任何元素,请使用set.iterator().next()

public Penny removePenny() {

    if (penniesSet.size() == 0) {
        return null;
    }
    Penny penny = penniesSet.iterator().next();
    penniesSet.remove(penny);
    return penny;
}

答案 2 :(得分:0)

您必须使用Iterator返回并从Hashset中删除便士对象。 请尝试以下代码:

public Penny removePenny(){
    Penny p = null;
    Iterator it = penniesSet.iterator();
    if(it.hasNext()) {
        p = (Penny) it.next();
        it.remove();
    }
    return p;
}