์คํธ๋ฆผ
๋ฐฐ์ด์ด๋ ์ปฌ๋ ์
์ ์์๋ค์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ํด๋์ค
์ฃผ์ ๊ธฐ๋ฅ (์ฐ์ฐ)
์ ์ฒด๋ฐ๋ณต, ์ ๋ ฌ, ํํฐ, ๋งคํ
์คํธ๋ฆผ ์ฐ์ฐ ๋ถ๋ฅ
โข
์ค๊ฐ ์ฐ์ฐ
โข
์ต์ข
์ฐ์ฐ
์ค๊ฐ ์ฐ์ฐ
์ค๊ฐ ์ฐ์ฐ | ์ค๋ช
|
filter | ์กฐ๊ฑด์ ๋ง๋ ์์ ์ถ์ถ |
map | ์์๊ฐ ๊ฐ์ง ํน์ ๋ณ์ ๋๋ ์๋ก์ด ์์๋ฅผ ๋ฐํ |
sort | ์์๋ค์ ์ ๋ ฌ |
์ต์ข ์ฐ์ฐ
์ต์ข
์ฐ์ฐ | ์ค๋ช
|
forEach | ๋ชจ๋ ์์๋ฅผ ๋ฐ๋ณต |
count | ์์์ ๊ฐ์ |
sum | ์์์ ํฉ๊ณ |
reduce | ์์๋ค์ ๊ฒฐํฉํ ๋จ์ผ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ |
์คํธ๋ฆผ ๋ฉ์๋ ์์
1. filter ๋ฉ์๋
public class StreamFilter {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ๊ฐ๊ฒฉ์ด 700000์ ์ด์์ธ ์ ํ๋ง ํํฐ๋ง
products.stream()
.filter(p -> p.getPrice() >= 700000)
.forEach(p -> System.out.println(p.getName()));
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ ์ํ ๋ชฉ๋ก์์ ๊ฐ๊ฒฉ์ด 70๋ง์ ์ด์์ธ ์ ํ๋ง ํํฐ๋งํ์ฌ ์ด๋ฆ์ ์ถ๋ ฅํฉ๋๋ค.
2. map ๋ฉ์๋
public class StreamMap {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ์ ํ ์ด๋ฆ๋ง ์ถ์ถํ์ฌ ์๋ก์ด ์คํธ๋ฆผ ์์ฑ
products.stream()
.map(Product::getName)
.forEach(System.out::println);
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ ์ํ ๊ฐ์ฒด์์ ์ด๋ฆ๋ง ์ถ์ถํ์ฌ ์๋ก์ด ์คํธ๋ฆผ์ ์์ฑํ๊ณ ์ถ๋ ฅํฉ๋๋ค.
3. sort ๋ฉ์๋
public class StreamSort {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ๊ฐ๊ฒฉ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
products.stream()
.sorted((p1, p2) -> p1.getPrice() - p2.getPrice())
.forEach(p -> System.out.println(p.getName() + ": " + p.getPrice()));
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ ์ํ์ ๊ฐ๊ฒฉ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
4. forEach ๋ฉ์๋
public class StreamForEach {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ๋ชจ๋ ์ ํ ์ ๋ณด ์ถ๋ ฅ
products.stream()
.forEach(p -> System.out.println(p.getName() + ": " + p.getPrice()));
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ ๋ชจ๋ ์ํ์ ์ด๋ฆ๊ณผ ๊ฐ๊ฒฉ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
5. count ๋ฉ์๋
public class StreamCount {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ๊ฐ๊ฒฉ์ด 700000์ ์ด์์ธ ์ ํ ๊ฐ์ ๊ณ์ฐ
long count = products.stream()
.filter(p -> p.getPrice() >= 700000)
.count();
System.out.println("70๋ง์ ์ด์ ์ ํ ์: " + count);
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ 70๋ง์ ์ด์์ธ ์ ํ์ ๊ฐ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
6. sum ๋ฉ์๋
public class StreamSum {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// ๋ชจ๋ ์ ํ์ ๊ฐ๊ฒฉ ํฉ๊ณ ๊ณ์ฐ
int totalPrice = products.stream()
.mapToInt(Product::getPrice)
.sum();
System.out.println("์ด ๊ฐ๊ฒฉ: " + totalPrice);
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ ๋ชจ๋ ์ํ์ ๊ฐ๊ฒฉ ํฉ๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
7. reduce ๋ฉ์๋
public class StreamReduce {
public static void main(String[] args) {
List<Product> products = Arrays.asList(
new Product("๋
ธํธ๋ถ", 1200000),
new Product("์ค๋งํธํฐ", 800000),
new Product("ํ๋ธ๋ฆฟ", 500000)
);
// reduce๋ฅผ ์ฌ์ฉํ ๊ฐ๊ฒฉ ํฉ๊ณ ๊ณ์ฐ
int totalPrice = products.stream()
.map(Product::getPrice)
.reduce(0, (a, b) -> a + b);
System.out.println("์ด ๊ฐ๊ฒฉ: " + totalPrice);
}
}
Java
๋ณต์ฌ
์ ์ฝ๋๋ reduce๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ํ์ ๊ฐ๊ฒฉ์ ํฉ์ฐํฉ๋๋ค. reduce๋ ์ด๊ธฐ๊ฐ(0)๊ณผ ๋ ์์๋ฅผ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ์ฌ ์ต์ข
๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํฉ๋๋ค.