본문으로 바로가기

문자열 뒤집기 (Java String reverse)

category 공부/Java 2023. 5. 8. 15:08

java 에서 문자열을 다루며 빈번하게 하는 작업 중 하나가 뒤집기(reverse) 이다.

 

🎈 문자열 뒤집기 예시 : "abcde" -> "edcba"

 

💕 1. StringBuilder, StringBuffer를 이용

reverse() 메소드를 제공하는 StringBuilder / StringBuffer 클래스를 이용한다.

바꾸고 싶은 문자열을 이용하여 StringBuilder 또는 StringBuffer 객체를 생성 후에 제공되는 reverse() 메소드를 사용한다.

public class Main {
	public static void main(String[] args) {
    	
        String str = "abcde";
        
        // reverse
        StringBuffer sb = new StringBuffer(str);
        String reversedStr = sb.reverse().toString();
        
        System.out.println(reversedStr);
        
    }
}

 

🎈 2. char[] 로 변환하여 뒤집기

String 문자열을 charr 배열로 변환 후 역순으로 새로운 char 배열에 저장하여 문자열로 변환한다.

public class Main {
	public static void main(String[] args) {
    	
        String str = "abcde";
        
        char[] arr = str.toCharArray();	// String -> char[]
       	char[] reversedArr = new char[arr.length];
        
        for(int i = 0; i < arr.length; i++) {
        	reversedArr[arr.length-1-i] = arr[i];
        }
        
        String reversedStr = new String(reversedArr);
        System.out.println(reversedStr);	// edcba
        
    }
}

 

🎈 3. List 로 변환 후 Collections.reverse(list) 이용하여 뒤집기

reverse 메소드를 제공하는 Collections 클래스를 이용하기 위해 List<Character> 타입으로 변환 후 뒤집기를 수행한다.

public class Main {
	public static void main(String[] args) {
    	
        String str = "abcde";
        
        char[] arr = str.toCharArray(); // String => char[]
        List<Character> list = new ArrayList<>();
        for (char each : arr) {	// char[] -> List
        	list.add(each);
        }
        
        // reverse
        Collections.reverse(list);
        
        ListIterator li = list.listIterator();
        while(li.hasNext()) {
        	System.out.println(li.next());	// edcba
        }
        
    }
}

'공부 > Java' 카테고리의 다른 글

스트링 클래스의 문제점  (0) 2024.06.25
스트링버퍼  (0) 2024.06.25
java.lang 패키지/오토박싱  (0) 2024.06.25
Object와 오버라이딩  (0) 2024.06.25
문자열 배열을 문자열로 변환 (String Array to String)  (0) 2023.05.04