📌 자바 특정 문자열 반복하기
파이썬을 접해보았다면 문자열을 반복할 때 "ABC" * 정수 와 같은 코드를 사용한 경험이 있을 것이다.
파이썬과 비슷하게 자바에서는 String클래스의 repeat 메서드를 통해 문자열을 반복할 수 있다.
repeat 메서드는 자바 11에서 새롭게 추가된 String 메서드이며, 파라미터로 전달하는 정수만큼 문자열을 반복한다. 또한, 0을 입력할 경우 빈 문자열을 반환하며, 음수를 입력하면 IllegalArgumentExceptionthrow 이 발생한다.
repeat의 내부 로직을 살펴보면 Arrays.fill()과 System.arraycopy() 를 통해 문자열을 만들어 반환하며,
반복 횟수를 n 주어진 문자열을 s라 할 때, O(n|s|)의 시간 복잡도를 갖는다.
1️⃣ Java 11 이전의 방식
n을 문자열의 반복 횟수, 반복할 문자열을 s라고 할 때 아래와 같다.
◾ StringBuilder와 for문을 통한 반복
반복할 횟수만큼 for 루프를 실행하며 각 루프마다 StringBuilder에 주어진 문자열을 추가해준다.
String str = "ab";
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 5; i++) {
sb.append(str);
}
System.out.println("result : " + sb); // result : ababababab
◾ Java 1.5
n개의 문자 배열을 String으로 만든 후 각각의 문자를 주어진 문자열로 replace 시킨다.
String repeated = new String(new char[n]).replace("\0", s);
// 예시
String repeated = new String(new char[5]).replace("\0", "ab");
System.out.println(repeated); // ababababab
◾ Java 7
길이가 n인 문자 포맷의 각 자리를 주어진 문자열로 replace 시킨다.
String.format("%0" + n + "d", 0).replace("0", s);
//예시
String repeated = String.format("%0" + 5 + "d", 0).replace("0", "ab");
System.out.println(repeated); // ababababab
◾ Java 8
자바8에서 추가된 Collections의 nCopies 메서드를 이용한다.
String.join("", Collections.nCopies(n, s));
// 예시
String repeated = String.join("", Collections.nCopies(5, "ab"));
System.out.println(repeated); // ababababab
2️⃣ Java 11
repeat 메서드는 자바11에서 추가된 String의 메서드이며 문자열을 반복하는 가장 쉬운 방법이다.
"s".repeat(n);
//예시
String repeated = "ab".repeat(5);
System.out.println(repeated); // ababababab
📌 참고사이트
▪ JavsString.net :: repeat() Method
'Backend > Java (Spring)' 카테고리의 다른 글
[Java] 자바 특정문자로 시작, 특정문자로 끝나는지 체크하기 (0) | 2023.01.02 |
---|---|
[Java] 자바 ArrayList를 이용한 집합 연산 방법 (0) | 2022.12.05 |
[Java] DecimalFormat을 이용한 숫자 형식 변경 (0) | 2022.11.07 |
[Java] 숫자 왼쪽에 0으로 값 채우기 (0) | 2022.11.04 |
[Java] Map을 List로 변환하는 방법 (0) | 2022.08.24 |
최근댓글