소개
Java 에서 문자열 내 특정 문자가 나타나는 횟수를 쉽게 계산할 수 있습니다. 이 랩에서는 문자열 내 문자의 발생 횟수를 세는 데 사용할 수 있는 다양한 방법을 안내합니다.
Java 에서 문자열 내 특정 문자가 나타나는 횟수를 쉽게 계산할 수 있습니다. 이 랩에서는 문자열 내 문자의 발생 횟수를 세는 데 사용할 수 있는 다양한 방법을 안내합니다.
특정 문자가 나타나는 횟수를 세기 위해 문자열의 각 문자를 순회하는 반복적 접근 방식을 사용할 수 있습니다.
~/project 디렉토리에 CountOccurrences.java라는 Java 파일을 생성하고 다음 내용을 파일에 복사합니다.
public class CountOccurrences {
public static int countChars(String str, char c) {
int count = 0;
for(int i = 0; i < str.length(); i++) {
char currChar = str.charAt(i);
if(currChar == c)
count += 1;
}
return count;
}
public static void main(String[] args) {
String s = "Java is an awesome language!";
int charCountOfA = countChars(s, 'a');
int charCountOfG = countChars(s, 'g');
int charCountOfE = countChars(s, 'e');
System.out.println("The String is: " + s);
System.out.println("Character count of 'a': " + charCountOfA);
System.out.println("Character count of 'g': " + charCountOfG);
System.out.println("Character count of 'e': " + charCountOfE);
}
}
프로그램을 컴파일하고 실행하려면 터미널에서 다음 명령을 실행합니다.
cd ~/project
javac CountOccurrences.java && java CountOccurrences
출력 결과는 다음과 같아야 합니다.
The String is: Java is an awesome language!
Character count of 'a': 6
Character count of 'g': 2
Character count of 'e': 3
문자열 내 문자의 발생 횟수를 세기 위해 재귀적 접근 방식 (recursive approach) 을 사용할 수도 있습니다. 이는 두 개의 메서드를 사용하는 것을 포함하며, 첫 번째 메서드는 재귀적이고 두 번째 메서드는 첫 번째 메서드를 호출합니다.
CountOccurrences.java 파일의 Step 1 코드 블록 뒤에 다음 코드 블록을 복사하여 붙여넣습니다.
public static int countCharsRecur(String str, char c, int idx) {
if(idx >= str.length())
return 0;
else {
int count = 0;
if(str.charAt(idx) == c)
count = 1;
return count + countCharsRecur(str, c, idx + 1);
}
}
public static int countChars(String s, char c) {
return countCharsRecur(s, c, 0);
}
업데이트된 프로그램을 컴파일하고 실행하려면 Step 1 과 동일한 명령을 실행합니다.
cd ~/project
javac CountOccurrences.java && java CountOccurrences
Java 8 Streams 을 사용하여 문자열 내 문자의 발생 횟수를 셀 수 있습니다.
CountOccurrences.java 파일의 Step 2 코드 블록 뒤에 다음 코드 블록을 복사하여 붙여넣습니다.
public static void usingStreams(String s) {
int charCountOfA = (int) s.chars().filter(c -> c == 'a').count();
int charCountOfG = (int) s.chars().filter(c -> c == 'g').count();
int charCountOfE = (int) s.chars().filter(c -> c == 'e').count();
System.out.println("The String is: " + s);
System.out.println("Character count of 'a': " + charCountOfA);
System.out.println("Character count of 'g': " + charCountOfG);
System.out.println("Character count of 'e': " + charCountOfE);
}
Java 8 Streams 메서드를 사용하려면 main 메서드의 Step 2 코드 블록 뒤에 다음 코드 줄을 추가합니다.
usingStreams(s);
업데이트된 프로그램을 컴파일하고 실행하려면 Step 1 과 동일한 명령을 실행합니다.
cd ~/project
javac CountOccurrences.java && java CountOccurrences
문자열 내 문자의 발생 횟수를 세기 위해 외부 라이브러리를 사용할 수 있습니다.
Guava 라이브러리는 주어진 문자의 발생 횟수를 셀 수 있는 CharMatcher 클래스를 제공합니다.
Step 3 코드 블록 뒤에 다음 코드 블록을 추가합니다.
public static int usingGuava(String str) {
CharMatcher cm = CharMatcher.is('a');
int charCountOfA = cm.countIn(str);
System.out.println("Character count of 'a': " + charCountOfA);
return charCountOfA;
}
Guava 라이브러리를 사용하려면 CountOccurrences.java 파일의 맨 위에 다음 import 문을 추가합니다.
import com.google.common.base.CharMatcher;
main 메서드에서 문자열 매개변수를 사용하여 usingGuava 메서드를 호출합니다.
usingGuava(s);
업데이트된 프로그램을 컴파일하고 실행하려면 Step 1 과 동일한 명령을 실행합니다.
cd ~/project
javac -cp ".:./lib/*" CountOccurrences.java && java -cp ".:./lib/*" CountOccurrences
Apache Commons 라이브러리는 문자와 문자열을 입력으로 받아 해당 문자열 내 문자의 횟수를 반환하는 편리한 countMatches() 메서드를 가진 StringUtils 클래스를 제공합니다.
Step 4 코드 블록 뒤에 다음 코드 블록을 추가합니다.
public static int usingApache(String str) {
int charCountOfA = StringUtils.countMatches(str, 'a');
int charCountOfG = StringUtils.countMatches(str, 'g');
int charCountOfE = StringUtils.countMatches(str, 'e');
System.out.println("Character count of 'a': " + charCountOfA);
System.out.println("Character count of 'g': " + charCountOfG);
System.out.println("Character count of 'e': " + charCountOfE);
return charCountOfA;
}
Apache Commons 라이브러리를 사용하려면 CountOccurrences.java 파일의 맨 위에 다음 import 문을 추가합니다.
import org.apache.commons.lang3.StringUtils;
main 메서드에서 문자열 매개변수를 사용하여 usingApache 메서드를 호출합니다.
usingApache(s);
업데이트된 프로그램을 컴파일하고 실행하려면 Step 1 과 동일한 명령을 실행하되, classpath 를 추가합니다.
cd ~/project
javac -cp ".:./lib/*" CountOccurrences.java && java -cp ".:./lib/*" CountOccurrences
이 랩에서는 다음 단계를 다루었습니다.
이 랩을 완료하면 문자열 내 문자의 발생 횟수를 계산하는 다양한 방법에 대한 이해도가 높아질 것입니다.