●필터링
package org.example;
import java.util.Arrays;
import java.util.List;
public class Main4 {
public static void main(String[] args) {
Person p1 = new Person("홍길동",20);
Person p2 = new Person("김길동",40);
Person p3 = new Person("이길동",30);
Person p4 = new Person("박길동",50);
List<Person> list = Arrays.asList(p1,p2,p3,p4);
list.stream().filter(person -> person.getAge()==20).forEach(System.out::println); // 필터링
System.out.println();
for (Person person : list){
if(person.getAge() ==20){
System.out.println(person);
}
}
}
}
두가지 방법이 있다.
● 맵핑
package org.example;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class Main5 {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("box", "robot", "simple");
Stream<Integer> is = list1.stream().map(s -> s.length());
is.forEach(System.out::println);
list1.stream().map(s -> s + s).forEach(System.out::println);
list1.stream().map(s -> s + "입니다.").forEach(System.out::println);
Person p1 = new Person("홍길동", 20);
Person p2 = new Person("김길동", 40);
Person p3 = new Person("이길동", 30);
Person p4 = new Person("박길동", 50);
List<Person> list = Arrays.asList(p1, p2, p3, p4);
list.stream()
.map(person -> {
return person.getName() + "입니다.";
})
.forEach(System.out::println);
for (Person person : list) {
System.out.println(person.getName() + "입니다.");
}
int sum = list.stream()
.mapToInt(person -> person.getAge())
.filter(integer -> integer>20)
.reduce(0, (a, b) -> a += b);
System.out.println(sum);
}
}
● 필터링 후 맵핑
package org.example;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Toy {
private String name;
private int price;
public Toy(String name, int price) {
this.name = name;
this.price = price;
}
public int getPrice() {
return price;
}
}
public class Main6 {
public static void main(String[] args) {
List<Toy> list = Arrays.asList(new Toy("로봇", 3000),
new Toy("총", 5000),
new Toy("인형", 10000));
int sum = list.stream()
.filter(toy -> toy.getPrice() < 10000)
.mapToInt(value -> value.getPrice())
.sum();
System.out.println(sum);
int sum1 = list.stream()
.filter(toy -> toy.getPrice() < 10000)
.mapToInt(value -> value.getPrice())
.reduce(0,(left, right) -> left + right);
System.out.println(sum1);
}
}
최종 연산에는 sum 이랑 reduce 가 있는데 sum은 제한되는것이 있기 때문에 reduce 도 사용해 봤습니다.
중간연산에는 filter이랑 map이 있습니다.
●reduce
package org.example;
import java.util.Arrays;
import java.util.List;
public class Main7 {
public static void main(String[] args) {
List<String> list = Arrays.asList("box","robot","complex","simple");
String result = list.stream()
.reduce("",(s, s2) ->
{
if (s.length() > s2.length()) {
return s;
}
else
return s2;
}
);
System.out.println(result);
}
}
최종 연산에서 길이를 비교 했을때 가장 긴 값인 complex 가 출력이 된다.
'java' 카테고리의 다른 글
스트림의 최종연산 (1) | 2024.02.15 |
---|---|
스트림 2 (0) | 2024.02.15 |
스트림의 이해와 생성 (1) | 2024.02.15 |
미리 정의되어 있는 함수형 인터페이스 (1) | 2024.02.13 |
람다와 함수형 인터페이스 (1) | 2024.02.08 |