2

我有一个书单

List<Book> books = new ArrayList<Book>();

public class Book {
    String name;
    List<Author> authors;
}

书包含一个作者列表,其中包含 ID、姓名和年龄

public class Author {
    int ID;
    String Name;
    int Age;
}

我可以遍历书籍列表并返回Book名称 = x 但我不确定如何搜索Author并返回名称 = y。

4

3 回答 3

8

将一个方法添加hasAuthor(String)到您的Bookwhich 循环遍历List<Author>列表并比较名称。像这样:

boolean hasAuthor(String name) {
    for (Author author : authors) {
        if (author.name.equals(name)) {
            return true;
        }
    }
    return false;
}

要查找具有特定作者的书籍,请遍历List<Book>并调用该hasAuthor(String)方法。

于 2013-08-18T16:46:13.250 回答
1

也许这是题外话,但是在解决此类问题时,使用带有嵌套列表的对象虽然逻辑上很简单,但却是一个非常糟糕的主意。它极难维护、扩展和使用。

如果您始终使用此结构并遇到以下问题:

把这个作者写的所有书都给我。

你是敬酒,你将不得不遍历每一本书。或者开始维护缓存等等。当嵌套加深时,情况会变得更糟。

可以说,现在您还需要维护每个作者的爱好列表。想想你会如何实现这样的事情:把所有作者喜欢跳伞的书都给我!

我知道这不能回答你的问题。只是我的2美分。

于 2013-08-18T17:10:00.263 回答
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;
}

编辑:太晚了:/

于 2013-08-18T16:52:54.457 回答