반응형
객체 리스트를 for문 돌릴때 결과값을 한번에 담아서 리턴하는 방법 4가지
public class Student {
private static int baseId = 1000;
private String name;
private int id;
ArrayList<Subject> subjects = new ArrayList<>();
public Student(String name) {
this.name = name;
this.id = ++baseId;
}
public String getName(){
return name;
}
public String getSubjectName(){
아래 4가지 방법중 선택
}
public String showInfo(ArrayList<Subject> subjects){
String info = id+" " + name +" student's subject :" + getSubjectName();
return info;
}
package org.example;
public class StudentTest {
public static void main(String[] args) {
Student lee = new Student("lee");
Student kim = new Student("kim");
lee.subjects.add(new Subject("국어",100));
lee.subjects.add(new Subject("수학",50));
kim.subjects.add(new Subject("국어",70));
kim.subjects.add(new Subject("수학",85));
kim.subjects.add(new Subject("영어",100));
System.out.println(lee.showInfo(lee.subjects));
System.out.println(kim.showInfo(kim.subjects));
}
}
1) StringBuilder 사용
- 단순 이어붙이기
- 단점 : 마지막 구분자처리를 셀프로 해줘야함,,,귀찮
public String getSubjectName(){
StringBuilder sbb = new StringBuilder();
for( Subject sb : subjects){
sbb.append(sb.getSubjectName() + ","+ sb.getScore()).append(",");
}
return sbb.toString();
}

728x90
2) StringJoiner 사용 ( 자바8이상, 코드가 깔끔하고, 구분자 처리하기 좋음)
- StringJoiner는 StringBuilder와 성능은 비슷하지만 더 간결한 방법으로 문자열을 결합할 수 있음
- 구분자(, )를 자동으로 처리하며, 마지막 쉼표를 제거하는 수고를 덜어줍
public String getSubjectName(){
StringJoiner sbb = new StringJoiner(",");
for( Subject sb : subjects){
sbb.add(sb.getSubjectName() + " " + sb.getScore());
}
return sbb.toString();
}

3) String.join 사용 ( 리스트를 이용하여 데이터를 처리하고, join()으로 연결하는 방식)
- String 타입의 리스트에 담은 후 String.join으로 이어붙이기
public String getSubjectName(){
List<String> list = new ArrayList<>();
for( Subject sb : subjects){
list.add(sb.getSubjectName() + "," +sb.getScore());
}
return String.join(",",list);
}

반응형
4) Stream 사용 ( 자바8이상, 가장 코드가 간결함 )
- 고급 작업이 필요하거나 선언적인 방식이 선호될때 사용
public String getSubjectName(){
return subjects.stream().map(sb->sb.getSubjectName() +" " +sb.getScore()).collect(Collectors.joining(","));
}

반응형
'백엔드' 카테고리의 다른 글
| [DB] DB별 바인딩 문법 (오라클,mysql,postgresql,mssql,sqlite) (1) | 2025.08.10 |
|---|---|
| [java] 상속 (상위 클래스, 하위 클래스) (0) | 2025.03.18 |
| [java] 배열복사, 얕은복사, 깊은복사 (0) | 2025.03.03 |
| [java] 배열 요소에 값이 있는 것만 추출하기 (1) | 2025.03.03 |
| [패턴] 싱글톤 패턴 (Singleton pattern) (0) | 2025.03.03 |