Java/자바 정리

164. 스트림 요소 출력하기 – 객체 리스트 출력 실습

코딩하는냥이 2025. 5. 23. 11:53
반응형

자바의 Stream API는 컬렉션의 요소를 간결하게 출력하거나 변환할 수 있는 기능을 제공합니다.
이번 예제에서는 Product 객체 리스트를 스트림으로 변환한 뒤,
모든 상품 정보를 출력하는 과정을 실습해보겠습니다.


📦 Product.java

package ch17.sec04;

public class Product {
	private int pno, price;
	private String name, company;

	public Product(int pno, int price, String name, String company) {
		this.pno = pno;
		this.company = company;
		this.name = name;
		this.price = price;
	}

	public int getPno() {
		return pno;
	}

	public int getPrice() {
		return price;
	}

	public String getName() {
		return name;
	}

	public String getCompany() {
		return company;
	}

	public String toString() {
		return new StringBuilder()
			.append("{")
			.append("pno : " + pno)
			.append(", name : " + name)
			.append(", company : " + company)
			.append(", price : " + price)
			.append("}")
			.toString();
	}
}

📌 예제 코드

package ch17.sec04;

import java.util.ArrayList;
import java.util.List;

public class StreamExample {
	public static void main(String[] args) {
		List<Product> list = new ArrayList<Product>();
		
		// 5개의 상품을 무작위 가격으로 생성
		for (int i = 1; i <= 5; i++)
			list.add(new Product(i, (int)(Math.random() * 10000), "상품" + i, "멋진회사"));
		
		// 스트림을 이용해 전체 상품 출력
		list.stream().forEach(System.out::println);
	}
}

💻 실행 결과 (예시)

{pno : 1, name : 상품1, company : 멋진회사, price : 7359}
{pno : 2, name : 상품2, company : 멋진회사, price : 118}
{pno : 3, name : 상품3, company : 멋진회사, price : 5027}
{pno : 4, name : 상품4, company : 멋진회사, price : 2643}
{pno : 5, name : 상품5, company : 멋진회사, price : 9884}

※ price는 실행할 때마다 Math.random()에 의해 변경됩니다.


💬 코드 설명

  • Product 클래스는 상품 번호, 이름, 제조사, 가격 정보를 담고 있습니다.
  • toString() 메서드는 상품 정보를 보기 좋게 문자열로 반환합니다.
  • List<Product> 컬렉션에 5개의 상품을 동적으로 생성합니다.
  • list.stream().forEach(System.out::println); 코드는
    스트림을 통해 각 상품 객체를 한 줄씩 출력합니다.
  • System.out::println은 람다식 (x) -> System.out.println(x)의 메서드 참조 방식입니다.

💡 포인트 정리

  • 스트림을 이용하면 컬렉션의 요소를 간단하고 명확하게 출력할 수 있습니다.
  • forEach()는 스트림의 최종 연산으로, 각각의 요소에 대해 지정된 동작을 수행합니다.
  • System.out::println처럼 메서드 참조를 활용하면 코드가 더욱 간결해집니다.
  • 출력 형식을 보기 좋게 하기 위해 toString()을 적절히 오버라이딩하는 것이 중요합니다.

📌정리하자면, 이번 예제에서는 스트림을 통해 객체 리스트의 모든 요소를 출력하는 흐름을 실습했습니다.
스트림의 forEach() 메서드와 System.out::println을 활용하면,
컬렉션의 내용을 한 줄의 코드로 손쉽게 출력할 수 있습니다.
이러한 기법은 디버깅이나 로그 출력, 혹은 사용자에게 데이터를 보여줄 때 유용하게 활용됩니다.