코딩테스트 연습을 하다보니 문자열을 하나씩 분리하게 되는 경우가 꽤 많았다.
나는 습관적으로 가장 익숙한 String.split("")을 사용하곤 하는데
다른 풀이를 보니 다양한 방법이 있어서 정리해본다
하나씩 특징을 알아보고 마지막에 한번에 볼 예정
바쁘신 분은 가장 아래로,,,
추가로 좋은 방법이 있거나 틀린 부분이 있으면 언제든 댓글 남겨주세요
피드백은 사랑입니다 👍
String.split(x)
은 지정된 문자열x
를 기준으로 문자열을 나누는 메서드.
split("")을 한다는 것은 결국 문자열을 한 글자씩 나눈다는 것!
문자열을 한 글자씩 나눠
char
타입의 배열에 담아 반환하는 메서드.
- 배열을 생성하여 처리하기 때문에 속도가 느리다.
(그럼 1번 방법도 속도가 느린 방법 중 하나인가?라는 의문이 들지만
아직 정확한 정보를 찾지 못해서 보류. 알게 되면 추가할 예정)
문자열의
인덱스 i
에 해당하는 문자를char타입
으로 반환하는 메서드.
- 한글자씩 반환하며
- toCharArray() 메서드에 비해 내부적인 처리속도가 빠르다고 한다. (배열을 생성하지 않기 때문에)
chars()
메서드를 이용해IntStream
화 한 후,char 타입의 스트림
으로 변환,- forEach를 이용해 한 글자씩 분리
(예제에선 한 글자씩 분리 후 출력)
String str = "MyString"; // 한 글자씩 분리해줄 문자열
// 1. String.split("")
for (String s : str.split("")) {
System.out.print(s + " ");
}
// 2. String.toCharArray()
for (char c : str.toCharArray()) {
System.out.print(c + " ");
}
// 3. String.charAt(i)
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i) + " ");
}
// 4. Stream 이용
str.chars() // (IntStream)
.mapToObj(i -> (char) i) // Stream<Character> 으로 변환
.forEach(i -> System.out.print(i + " ")); // 출력
// 위 방법들은 모두 아래와 같은 결과가 출력됩니다
// M y S t r i n g