Java 如何从哈希集中删除并返回对象?
我有一个已经填充了Penny对象的Hashset,我想创建一个方法,从Hashset中删除其中一个Penny对象并返回它。下面是我创建的方法,用于执行此操作,但当我收到错误消息时,它不起作用。有人能给我解释一下做这件事的正确方法吗Java 如何从哈希集中删除并返回对象?,java,hashset,bluej,Java,Hashset,Bluej,我有一个已经填充了Penny对象的Hashset,我想创建一个方法,从Hashset中删除其中一个Penny对象并返回它。下面是我创建的方法,用于执行此操作,但当我收到错误消息时,它不起作用。有人能给我解释一下做这件事的正确方法吗 public Penny removePenny(){ if(penniesSet.size()<= 0){ return null; } else penniesSet.remove(Penny)
public Penny removePenny(){
if(penniesSet.size()<= 0){
return null;
}
else
penniesSet.remove(Penny)
return penniesSet.get(Penny)
}
public Penny removeppenny(){
如果(pennieset.size()您正在将类型Penny
传递给remove
方法。您应该传递一个对象
关于get
方法,您可能应该阅读以下内容:
此外,在Hashset
中查找对象时可能会出现问题的一个典型问题是Penny
没有合适的()方法
像这样删除任意的便士
可能并不完全是您一开始想要做的事情。如果您想删除最后添加的一个便士(称为从堆栈中弹出),您可能需要考虑使用便士集。删除(便士)
和便士集。获取(便士)
将不起作用,因为Penny
是类名,而不是值。如果要从集合中获取任何要删除的元素,请使用set.iterator().next()
:
您必须使用迭代器返回penny对象并将其从Hashset中删除。
请尝试以下代码:
public Penny removePenny(){
Penny p = null;
Iterator it = penniesSet.iterator();
if(it.hasNext()) {
p = (Penny) it.next();
it.remove();
}
return p;
}
什么类型的错误消息?我假设您已经在实际代码中输入了缺少的;
,但您忘记输入上面的便士set.remove(便士)
由于多种原因,这是不可编译的。我建议您先从一本书开始,堆栈溢出不能代替一本书、教程或类。这个答案是错误的,remove()
返回一个布尔值
。要获得正确的实现,请看我的答案。@scarLópez Oops,在地图上想删除
。你是不是只是复制粘贴了我自己的答案,甚至没有给予信任?!太棒了。@scarLópez不要那么热衷于攻击别人……我错误地使用了删除
,事实上使用了de>Iterator
概念在你更新之前。我可以确认August使用Iterator概念的时候,我的屏幕上Oscar的帖子仍然有便士。删除(Penny)
行(参见我在他的帖子上的评论)。我不确定指出了什么“事实”,因为我看到的只是一个带着疑问的指控,但是“事实”这项指控意味着根本不存在。
public Penny removePenny(){
Penny p = null;
Iterator it = penniesSet.iterator();
if(it.hasNext()) {
p = (Penny) it.next();
it.remove();
}
return p;
}