1. 개요
Java 의 문자열 에서 문자의 발생 수를 계산하는 방법에는 여러 가지가 있습니다 .
이 빠른 기사에서는 먼저 핵심 Java 라이브러리를 사용한 다음 Spring 및 Guava와 같은 다른 라이브러리 및 프레임 워크를 사용하여 문자 수를 계산하는 방법에 대한 몇 가지 예에 초점을 맞출 것입니다.
2. Core Java Lib 사용
2 .1. 명령 적 접근
일부 개발자는 핵심 Java를 선호 할 수 있습니다. 문자열에서 문자의 발생 횟수를 계산하는 방법에는 여러 가지가 있습니다.
간단하고 순진한 접근 방식으로 시작하겠습니다.
String someString = "elephant";
char someChar = 'e';
int count = 0;
for (int i = 0; i < someString.length(); i++) {
if (someString.charAt(i) == someChar) {
count++;
}
}
assertEquals(2, count);
당연히 이것은 효과가있을 것이지만 – 놀랍지 않게 –이를 수행하는 더 좋은 방법이 있습니다.
2.2. 재귀 사용
덜 분명하지만 여전히 흥미로운 해결책은 재귀를 사용하는 것입니다.
private static int countOccurences(
String someString, char searchedChar, int index) {
if (index >= someString.length()) {
return 0;
}
int count = someString.charAt(index) == searchedChar ? 1 : 0;
return count + countOccurences(
someString, searchedChar, index + 1);
}
다음과 같은 방법으로이 재귀 메서드를 호출 할 수 있습니다. useRecursionToCountChars ( "elephant", 'e', 0)
2.4. 정규식 사용
또 다른 방법은 정규 표현식을 사용하는 것입니다.
Pattern pattern = Pattern.compile("[^e]*e");
Matcher matcher = pattern.matcher("elephant");
int count = 0;
while (matcher.find()) {
count++;
}
assertEquals(2, count);
이 솔루션은 기술적으로 정확하지만 문자열에서 문자의 발생 수를 찾는 것과 같은 간단한 문제를 해결하기 위해 매우 강력한 정규식을 사용하는 것은 과도하므로 차선책입니다.
2.5. Java 8 기능 사용
Java 8에서 사용할 수있는 새로운 기능은 여기에서 매우 유용 할 수 있습니다.
카운트를 구현하기 위해 스트림과 람다를 사용합시다.
String someString = "elephant";
long count = someString.chars().filter(ch -> ch == 'e').count();
assertEquals(2, count);
long count2 = someString.codePoints().filter(ch -> ch == 'e').count();
assertEquals(2, count2);
따라서 이것은 코어 라이브러리를 사용하는 명확하고 더 읽기 쉬운 솔루션입니다.
3. 외부 라이브러리 사용
이제 외부 라이브러리의 유틸리티를 사용하는 몇 가지 솔루션을 살펴 보겠습니다.
3.1. StringUtils 사용
일반적으로 우리 자신의 솔루션을 개발하는 대신 기존 솔루션을 사용하는 것이 항상 좋습니다. commons.lang.StringUtils의 클래스는 우리에게 제공 countMatches () 계수 문자 또는 주어진 심지어 하위 문자열을 사용할 수있는 방법, 문자열 .
먼저 적절한 종속성을 포함해야합니다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Maven Central 에서 최신 버전을 찾을 수 있습니다 .
이제 countMatches () 를 사용 하여 "코끼리"문자열 리터럴의 'e'문자 수를 계산해 보겠습니다 .
int count = StringUtils.countMatches("elephant", "e");
assertEquals(2, count);
3.2. 구아바 사용
구아바는 또한 문자 수를 세는 데 도움이 될 수 있습니다. 종속성을 정의해야합니다.
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>21.0</version>
</dependency>
Maven Central 에서 최신 버전을 찾을 수 있습니다 .
Guava가 문자 수를 빠르게 계산하는 데 어떻게 도움이되는지 살펴 보겠습니다.
int count = CharMatcher.is('e').countIn("elephant");
assertEquals(2, count);
3.3. Spring 사용
당연히 문자 수를 계산하기 위해 Spring Framework를 프로젝트에 추가하는 것은 의미가 없습니다. 그러나 프로젝트에 이미있는 경우 countOccurencesOf () 메서드 를 사용하면 됩니다 .
int count = StringUtils.countOccurrencesOf("elephant", "e");
assertEquals(2, count);
4. 결론
이 빠른 자습서에서는 문자열에서 문자를 계산하는 다양한 방법에 중점을 두었습니다. 그들 중 일부는 순전히 Java로 설계되었습니다. 일부는 추가 라이브러리가 필요했습니다.
우리의 권장 사항은 StringUtils , Guava 또는 Spring의 기존 유틸리티를 사용하는 것 입니다. 그러나 일반 Java 만 사용하는 것을 선호하는 경우이 기사에서는 Java 8을 사용하여 잘 수행 할 수있는 가능성을 제공합니다.
이러한 예제의 전체 소스 코드는 이 GitHub 프로젝트 에서 사용할 수 있습니다 .