길이가 N인 문자열 str을 순회하면서 문자를 출력합니다.
1.for문을 이용한 출력
가장 간단한 방법입니다. 0부터 N-1까지 변수 i를 사용하여 문자를 출력합니다.
public class StringPrinter1 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
for(int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i));
}
}
}
2.String.toCharArray()를 이용한 출력
String.toCharArray() 메서드를 이용하여 문자열을 문자 배열로 변환합니다. 그런 다음 반복문을 이용하여 문자를 출력합니다.
public class StringPrinter2 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
char[] ch = str.toCharArray();
for(int i = 0; i < ch.length; i++) {
System.out.print(ch[i]);
}
}
}
3.CharacterIterator를 이용한 출력
Iterator를 이용하여 current()를 사용하여 현재 문자를 가져오고 next()를 사용하여 한 위치 앞으로 이동합니다.
public class StringPrinter3 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
CharacterIterator it = new StringCharacterIterator(str);
while(it.current() != CharacterIterator.DONE) {
System.out.print(it.current());
it.next();
}
}
}
4.StringTokenizer를 이용한 출력
StringTokenizer에서 flag를 false일때는 구분자는 생략하고 true일때는 구분자도 포함되어서 리턴됩니다.
더보기
StringTokenizer(String str, String delim, boolean flag)
ex) StringTokenizer("hello wolrd", " ", flase) -> "hello","wolrd"
ex) StringTokenizer("hello wolrd", " ", true) -> "hello"," ","wolrd"
public class StringPrinter4 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
StringTokenizer st = new StringTokenizer(str, str, true);
while(st.hasMoreTokens()) {
System.out.print(st.nextToken());
}
System.out.println();
st = new StringTokenizer(str, "", false);
while(st.hasMoreTokens()) {
System.out.print(st.nextToken());
}
}
}
5.String.split()를 이용한 출력
정규식을 기반으로 문자열을 분할합니다.
public class StringPrinter5 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
String[] substrings = str.split("");
for(String ch : substrings) {
System.out.print(ch);
}
}
}
6.Guava 라이브러리를 이용한 출력
Maven Repository에서 Guava를 검색 후 라이브러리 다운받은 후 추가합니다.
import com.google.common.collect.Lists;
public class StringPrinter6 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
for(Character ch : Lists.charactersOf(str)) {
System.out.print(ch);
}
System.out.println();
// 람다식을 사용한 출력
Lists.charactersOf(str).listIterator().forEachRemaining(ch -> System.out.print(ch));
System.out.println();
// 메소드 참조를 사용한 출력
Lists.charactersOf(str).listIterator().forEachRemaining(System.out::print);
}
}
7.String.chars()를 이용한 출력
이 메서드는 성능상의 이유로 Stream<Character>를 반환하지 않고 Stream<Character>로 변환될 수 있는 IntStream으로 반환합니다.
public class StringPrinter7 {
public static void main(String[] args) {
String str = "hello wolrd";
traverseString(str);
}
static void traverseString(String str) {
// 유니코드 값을 출력
str.chars().forEach(System.out::print);
System.out.println();
str.chars().mapToObj(Character::toChars).forEach(System.out::print);
System.out.println();
str.chars().mapToObj(i -> Character.valueOf((char)i)).forEach(System.out::print);
System.out.println();
str.chars().mapToObj(i -> (char)i).forEach(System.out::print);
System.out.println();
str.chars().mapToObj(i -> new StringBuilder().appendCodePoint(i)).forEach(System.out::print);
System.out.println();
str.chars().forEach(i -> System.out.print(Character.toChars(i)));
System.out.println();
str.chars().forEach(i -> System.out.print((char)i));
System.out.println();
str.chars().forEach(i -> System.out.print(new StringBuilder().appendCodePoint(i)));
}
}
8.String.codePoints()를 이용한 출력
String.chars()와 똑같이 출력하시면 됩니다. String.codePints()는 더 많은 유니코드 값을 반환합니다.
'알고리즘 > 자료구조' 카테고리의 다른 글
Linked List 무엇인가(연결 리스트와 배열의 차이) (0) | 2024.04.19 |
---|---|
문자열 JAVA에서의 저장공간 (0) | 2024.04.19 |
문자열 연산하기(삽입, 수정, 삭제, 비교) (0) | 2024.04.19 |
문자열이란 무엇인가? (0) | 2024.04.09 |
배열의 요소 중 특정 값 삭제하는 방법 (0) | 2024.04.09 |