想法:
我有一个对象
public class Book(){
private String name;
private Integer nbOfPage;
public Book()
...
}
我得到了这个对象的列表
List<Book> books = new ArrayList<Book>();
现在我想知道在 guava 或其他图书馆中,是否有一种快速的方法可以从我得到的所有书籍中获取所有不同名称的列表,我可以做的事情:
List<String> names = new ArrayList<String>();
for (Book aBook : books){
if (!names.contains(aBook.getName()){
names.add(aBook.getName());
}
}
我觉得这种方式有点“重”,我的书单可以有 200 到 1200 本书。
问候,
最佳答案
使用 Guava 的 Multimaps.index
.它的功能完全符合您的预期。
List<Book> books = ...
Function<Book,String> bookToName = new Function<Book,String>() {
String apply(Book b) { return b.getName(); }
}
Multimap<String,Book> booksByName = Multimaps.index(books, bookToName);
然后,使用您的 Multimap
,例如 booksByName.keys()
如果您只需要名称。
关于java - Guava :从包含变量的对象列表中获取变量列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871615/