Java搜索变量对象列表

时间:2013-08-18 16:42:31

标签: java list

我有一本书清单

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的位置。

3 个答案:

答案 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;
}

编辑:太晚了:/