[Java] 스트림(Stream) 활용 예제
2022. 2. 26. 15:31ㆍBack-end/Java
자바 스트림을 활용하여 간단한 코드를 작성해보자
예제 정의
어떤 온라인 게임에 전투력 10,000을 넘어야 입장할 수 있는 던전이 있다.
그리고 여러 명의 유저가 파티를 맺으면 전투력을 합칠 수 있다.
유저 세명이 파티를 맺었다고 했을 때
전투력 계산과 유저 검색 등에 대한 연산을 스트림을 활용하여 구현해보자.
유저에 대한 클래스를 만들고 배열로 유저를 관리한다.
파티를 맺은 유저 세명의 정보는 다음과 같다.
user1
name : 몰입맨
level : 10
power : 3000
user2
name : 코딩맨
level : 20
power : 4000
user3
name : 코딩걸
level : 15
power : 3500
유저 클래스
public class User {
private String name;
private int level;
private int power;
public User(String name, int level, int power) {
super();
this.name = name;
this.level = level;
this.power = power;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getPower() {
return power;
}
public void setPower(int power) {
this.power = power;
}
@Override
public String toString() {
return "User [name=" + name + ", level=" + level + ", power=" + power + "]";
}
}
스트림을 활용한 연산
import java.util.ArrayList;
import java.util.List;
public class UserTest {
public static void main(String[] args) {
User user1 = new User("몰입맨", 10, 3000);
User user2 = new User("코딩맨", 20, 4000);
User user3 = new User("코딩걸", 15, 3500);
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
System.out.println("user name 출력");
userList.stream().map(u -> u.getName()).forEach(u -> System.out.println(u));
// 몰입맨 코딩맨 코딩걸
System.out.println("user power 합계 출력");
System.out.println(userList.stream().mapToInt(u -> u.getPower()).sum());
// 10500
System.out.println("user level 15 이상 출력");
userList.stream().filter(u -> u.getLevel() >= 15).map(u -> u.getName()).sorted()
.forEach(u -> System.out.println(u));
// 코딩걸 코딩맨
}
}
반응형
'Back-end > Java' 카테고리의 다른 글
[Java] 스레드(Thread) 개념 정리 - sleep(), wait(), join() (0) | 2022.02.27 |
---|---|
[Java] 자바에서 예외(Exception) 처리를 하는 이유 (0) | 2022.02.26 |
[Java] 스트림(Stream) - reduce() (0) | 2022.02.26 |
[Java] 스트림(Stream) (0) | 2022.02.24 |
[Java] 객체 지향 프로그래밍 vs 람다식 (0) | 2022.02.23 |