Java/Short 개발

[Java/Short] 배열, 리스트를 문자열로 변환 방법 : Array, List to String

adjh54 2023. 5. 27. 13:11
728x170
해당 글에서는 값이 존재하는 배열이나 리스트 내용을 하나의 문자열로 변환하는 방법에 대해서 확인해봅니다.


 

 

 

1) String.join()를 이용한 방법


💡 String.join 함수를 이용하여서 Array, List를 문자열로 변환하는 예시입니다.
// List to String
List<String> list = new ArrayList<>();
list.add("Java");
list.add("List");
list.add("String");

String resultList = String.join("", list);
System.out.println(resultList); // "JavaListString"

// Array to String
String[] arr = {"java", "List", "String"};
String resultArr = String.join("", arr);
System.out.println(resultArr);

 

💡 해당 함수에 대해서 더 알고 싶으시면 아래의 링크를 이용하면 도움이 됩니다.
 

[Java] String 함수 이해하기 : format, join, valueOf, copyValueOf

해당 글에서는 java.lang에 속하는 String 함수에 대해서 이해를 돕기 위해 작성한 글입니다. 1) String 함수 요약 함수 설명 String.format() - 문자열을 “포맷팅”하기 위해서 사용되는 함수입니다. - 지

adjh54.tistory.com

 

 

 

2) StringBuilder를 이용한 방법


💡 StringBuilder 객체를 이용하여서 Array, List를 문자열로 변환하는 예시입니다.

💡 String에 비해 StringBuilder는 문자열의 변경이 자주 발생하는 경우 사용하면 메모리적으로 성능이 우수하다고 합니다.
// List to String
List<String> list = new ArrayList<>();
list.add("Java");
list.add("List");
list.add("String");

StringBuilder sb = new StringBuilder();
for (String s : list) {
    sb.append(s);
		sb.append(" ");
}
System.out.println(sb.toString()); // "Java List String"

// Array to String
String[] arr = {"java", "List", "String"};

StringBuffer sb2 = new StringBuffer();
for (String s : arr) {
    sb2.append(s);
}
System.out.println(sb2.toString()); // "Java List String"

 

 

💡 해당 함수에 대해서 더 알고 싶으시면 아래의 링크를 이용하면 도움이 됩니다.
 

[Java] String, StringBuffer, StringBuilder 이해하기

해당 페이지에서는 String과 StringBuffer, StringBuilder에 대해서 이해하고 각각의 차이점과 언제 사용해야 하는지에 대해 이해하기 위한 글입니다. 1) String, StringBuffer, StringBuilder💡 String이란? - Java에서

adjh54.tistory.com

 

 

 

3) StringJoiner를 이용한 방법


 💡 StringJoiner 객체를 이용하여 Array, List를 문자열로 변환하는 예시입니다.
// List to String
List<String> list = new ArrayList<>();
list.add("Java");
list.add("List");
list.add("String");

StringJoiner sj = new StringJoiner(" ");
for (String s : list) {
    sj.add(s);
}
String result = sj.toString();
System.out.println(result); // "Java List String"

// Array to String
// Array to String
String[] arr = {"java", "List", "String"};

StringBuffer sb2 = new StringBuffer();
for (String s : arr) {
    sb2.append(s);
}
System.out.println(sb2.toString()); // "Java List String"

 

 

 

4) Apache Commons Lang 라이브러리를 이용한 방법


 💡 StringUtils.join() 함수를 이용하여서 Array, List를 문자열로 변환하는 예시입니다.
import org.apache.commons.lang3.StringUtils;

//...

String[] arr = {"apple", "banana", "orange"};
String result = StringUtils.join(arr, ", ");

System.out.println(result); // "apple, banana, orange"

 

 

 

5) 참고 : 응용하기


 💡 해당 예시에서 확인하고 적용해보았습니다.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

/**
 * 42. 푸드 파이터 대회
 *
 * @return ResponseEntity
 * @link ...
 * @since 2023.05.26
 */
@GetMapping("/42")
public ResponseEntity<apiresponse> question42() {
    String answer = "";
    int[] food = {1, 3, 4, 6};

    List answerList = new ArrayList<>();

    /*
     * 한명의 참여자에 대해 나눠줄 음식 구하기
     */
    // [STEP1] 배열을 순회하면서 요소를 추출합니다.
    for (int i = 0; i < food.length; i++) {

        // [STEP2] 요소의 값을 반으로 나눴을때 0보다 클 경우만 수행합니다.
        if (food[i] / 2 > 0) {

            // [STEP3] 요소를 반으로 나누고 내림 값이 각각 선수에게 전달할 값입니다.
            int divideCnt = (int) Math.floor(food[i] / 2);

            // [STEP4] 전달할 값을 리스트에 문자열 값으로 담아둡니다.
            for (int j = 0; j < divideCnt; j++) {
                answerList.add(String.valueOf(i));
            }
        }
    }

    /*
     * 한명의 참여자 음식을 구한 뒤 "0"을 추가한뒤 역순으로 다른 참여자에 대해 음식을 하나의 문자열로 구성합니다.
     */
    String divideFoodStr = String.join("", answerList);
    Collections.reverse(answerList); // 문자열을 역순으로 정렬합니다.
    String divideFoodReverseStr = String.join("", answerList);
    answer = divideFoodStr + "0" + divideFoodReverseStr;

    ApiResponse ar = ApiResponse
            .builder()
            .result(answer)
            .resultCode(SUCCESS_CODE)
            .resultMsg(SUCCESS_MSG).build();
    return new ResponseEntity<>(ar, HttpStatus.OK);
}

 

 

 

💡 해당 예시에서 확인하고 적용해보았습니다.
 

구름LEVEL

구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입

level.goorm.io

 /**
 * 4. 대문자 만들기
 *
 * @return ResponseEntity<ApiResponse>
 * @link <a href="https://level.goorm.io/exam/171953/%EB%8C%80%EB%AC%B8%EC%9E%90-%EB%A7%8C%EB%93%A4%EA%B8%B0/quiz/1">...</a>
 * @since 2023.06.24
 */
@GetMapping("/4")
public ResponseEntity<ApiResponse<Object>> question04() {
    String answer = "";
    String input = "10";
    String input2 = "goormLevel";

    String[] input2Arr = input2.split("");

    for (int i = 0; i < Integer.parseInt(input); i++) {
        input2Arr[i] = input2Arr[i].toUpperCase();
    }
    answer = String.join("", input2Arr);

    ApiResponse<Object> ar = ApiResponse
            .builder()
            .result(answer)
            .resultCode(SUCCESS_CODE)
            .resultMsg(SUCCESS_MSG).build();
    return new ResponseEntity<>(ar, HttpStatus.OK);
}

 

 

 

 

오늘도 감사합니다. 😀

 

 

 

 

그리드형