我有一个已经填充了Penny对象的Hashset,我想创建一个方法从HashSet中删除其中一个Penny对象并返回它。这是我创建的方法,但它不起作用,因为我收到错误消息。谁能向我解释这样做的正确方法
public Penny removePenny(){
if(penniesSet.size()<= 0){
return null;
}
else
penniesSet.remove(Penny)
return penniesSet.get(Penny)
}
答案 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;
}