我有一本书清单
List<Book> books = new ArrayList<Book>();
public class Book {
String name;
List<Author> authors;
}
Book包含作者列表,其中包含ID,姓名和年龄
public class Author {
int ID;
String Name;
int Age;
}
我可以遍历图书列表并返回名称= x的Book
,但我不确定如何搜索Author
并返回姓名= y的位置。
答案 0 :(得分:8)
向hasAuthor(String)
添加方法Book
,循环遍历List<Author>
列表并比较名称。像这样:
boolean hasAuthor(String name) {
for (Author author : authors) {
if (author.name.equals(name)) {
return true;
}
}
return false;
}
要查找具有特定作者的图书,请循环遍历List<Book>
并调用hasAuthor(String)
方法。
答案 1 :(得分:1)
也许这不是主题,但在解决这些问题时,拥有具有嵌套列表的对象虽然在逻辑上很简单,却是一个非常错误的想法。它极难维护,扩展和使用。
如果您在整个过程中使用此结构并遇到如下问题:
向我提供本作者撰写的所有书籍。
你敬酒,你必须遍历每本书。或者开始维护缓存,什么不是。当嵌套加深时,情况会变得更糟。
让我们说,现在你需要维护每个作者的爱好列表。想想你会如何实现这样的目标:给我所有作者喜欢 skydiving 的书籍!
我知道这不能回答你的问题。我的2美分。
答案 2 :(得分:0)
原始的东西:
List<Author> authors;
...
Iterator<Author> ai = authors.iterator();
Author a;
while(ai.hasNext()){
a = ai.next();
if(a.name.equalsIgnoreCase(yourname)){
return a;
}
continue;
}
编辑:太晚了:/