高,如何循环链接列表。我需要编写一个方法find(),如果某个字符串在列表中,则返回true
public boolean find( Stack<String> s, String key )
{
for( String item : s )
{
if( item.equals( key ) )
return true;
}
return false;
}
答案 0 :(得分:1)
通常,您有一个指向列表头部的指针。检查指向项是否与搜索字符串匹配。如果是,则返回true。如果没有,则将指针移动到列表中的下一个项目。如果到达列表的末尾,则返回false。
(我假设这是作业,所以我实际上不会编写代码。如果你向我们展示一些非工作代码,我们将帮助你使它工作。)
编辑添加:如果您正在使用链接列表,为什么要传入堆栈?无论如何,你发布的代码看起来应该可行。您应该发布用于设置数据的代码并调用find
方法;那里可能有问题。
你提到的错误听起来好像你没有正确传递一个堆栈;你应该能够在Stack的内容上做一个foreach循环。
答案 1 :(得分:0)
已有“包含”方法:
http://download.oracle.com/javase/6/docs/api/java/util/LinkedList.html#contains(java.lang.Object)
如果您的LinkedList元素只是字符串,它应该可以正常工作。否则,您需要覆盖模型的'equals'方法。
答案 2 :(得分:0)
听起来你说你正在实现一个名为Stack
的自定义链接列表实现,并且你正在使用for-each语法循环遍历列表。为了使用该语法,您的类需要实现Iterable
接口。这意味着您还需要为列表创建Iterator
,这将提供next()
,hasNext()
和remove()
方法