public List<Book> booksForTitlePrefix(String prefix) { final LinkedList<Book> filtered = new LinkedList<Book>(); for (Book b : books()) { if (prefix.equals(TitleUtil.firstTitleLetter(b))) { filtered.add(b); } } return filtered; }
public List<String> titlesForTitlePrefix(String prefix, int limit) { if (limit <= 0) { return Collections.emptyList(); } final ArrayList<String> titles = new ArrayList<String>(limit); synchronized (myBooksByFile) { for (Book b : myBooksByFile.values()) { if (prefix.equals(TitleUtil.firstTitleLetter(b))) { titles.add(b.getTitle()); if (--limit == 0) { break; } } } } return titles; }