我正在尝试使用ArrayList进行foreach循环...这是故事......
我有一个ArrayList:
ArrayList<Album> coll = new ArrayList<Album>();
这包含有关构成收藏/图书馆的多张专辑的信息......
Album类包含一个以字符串形式返回相册名称的方法。
我基本上试图通过foreach循环来确定相册是否已经存在。
我有这个方法:
public Boolean findAlbumByName(ArrayList<Album> albumList, String name){
for (Album album : albumList)
{
if (album.getName().equals(name))
{
return true;
}
}
return false;
}
当我尝试执行此声明时会出现问题:
if(findAlbumByName(coll, 'example song') == false)
{
// code here
}
它的错误内容为:The method findAlbumByName(ArrayList<Album>, String) is undefined for the type Album.
任何帮助或线索都将受到高度赞赏。谢谢。
答案 0 :(得分:4)
您需要将'example song'
更改为"example song"
您可能想要更改
public Boolean findAlbumByName
到
public boolean findAlbumByName
^
撰写condition == false
的另一种方式是否定条件,例如!condition
。
Here是一个示例实现,如果你仍然卡住了。
答案 1 :(得分:2)
The method findAlbumByName(ArrayList<Album>, String) is undefined for the type Album
表示您尝试从Album
类调用该方法,即使您尚未在该类上定义该方法。要使代码工作,您需要做两件事:
Album
类(如果它属于它)"
)而不是单引号('
)。一旦你这样做,你的方法应该可以正常工作。
答案 2 :(得分:0)
public Boolean findAlbumByName(ArrayList<Album> albumList, String name)
应该是(注意小写布尔值)
public boolean findAlbumByName(ArrayList<Album> albumList, String name)
并以这种方式调用(通知用双引号限定字符串 - 单引号用于char类型): -
if(!findAlbumByName(coll, "example song"))
另外,您应该考虑在ArrayList声明的左侧使用接口。例如:
List<Album> coll = new ArrayList<Album>();
答案 3 :(得分:0)
也许使用完整的代码会更容易..顺便说一下,假设你的函数实现了一个用例(即它是一个通用函数,特别是它没有在类Album的任何实例上调用),那就不应该是static
??
`public static boolean findAlbumByName(ArrayList albumList,String name);
另外,您是否考虑过使用ArrayList的boolean contains(Object elem)
?请记得覆盖boolean equals(Object o)' in
Almbum` !!
答案 4 :(得分:-2)
if ( ! findAlbumByName(coll, 'example song') )
{
}