---
# System prepended metadata

title: Stream()
tags: [Note, java]

---

---

robots: index, follow
lang: zh-tw
dir: ltr
breaks: true
title: Stream()     # 簡報的名稱
tags: java,Note  # 簡報的標籤

---

# Stream()
目前寫法皆為for(XXX xxx : XXXlist){} 所以 需要了解Stream用法
:::info
REF:
https://www.runoob.com/java/java8-streams.html
http://blog.tonycube.com/2015/10/java-java8-3-stream.html
:::

例如，原本有個程式片段：
```gherkin=
List<Person> persons = ...;
List<String> names = new ArrayList<>();
for(Person person : persons) {
    if(person.getAge() > 15) {
        names.add(person.getName().toUpperCase());
    }
}
```
在JDK8中可以改為以下的風格：
```gherkin=
List<Person> persons = ...;
List<String> names = persons.stream()
                            .filter(person -> person.getAge() > 15)
                            .map(person -> person.getName().toUpperCase())
                            .collect(toList()); // 使用了 Collectors.toList() 方法
 ```