我們先定一個示例類:
public class Cat {
private String name;
private String nickName;
private String favourite;
public Cat(String name) {
this.name = name;
}
public String getName() {
return name;
}
// 省略其他get和set
}
當我們需要將List按照name為Key,Cat為Value組織成Map時,在Java8之前,我們是這麼寫的:
Listcats = new ArrayList ();
Map<string> catMap = new HashMap<string>(cats.size());
for(Cat cat : cats) {
catMap.put(cat.getName(), cat);
}
/<string>/<string>
至少要四行代碼,那麼如果用Lambda來寫只需要一行就搞定了:
Map<string> catMap = cats.stream().collect(Collectors.toMap(Cat::getName, c -> c));
/<string>
若Value只要貓的愛好,可以這麼寫:
Map<string> catMap = cats.stream().collect(Collectors.toMap(Cat::getName, Cat::getFavourite));
/<string>
是不是可簡單!
當然關於容器的stream的更多用法,我會在後續的秘籍裡逐一介紹。
閱讀更多 鷹眼世界 的文章