[Java] 스트림(Stream) 활용 예제

2022. 2. 26. 15:31Back-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));
		// 코딩걸 코딩맨
	}

}
반응형