주어진 문장에서 모든 중복 단어를 제거하려면 Java의 스트림(Stream) API를 활용하면 매우 간단하게 처리할 수 있습니다. 아래 예제 코드를 통해 그 방법을 살펴보겠습니다.
예제 코드
import java.util.Arrays;
import java.util.stream.Collectors;
public class Demo{
public static void main(String[] args){
String my_str = "This is a is sample a sample only.";
my_str = Arrays.stream(my_str.split("\\s+")).distinct().collect(Collectors.joining(" "));
System.out.println(my_str);
}
}실행 결과
This is a sample only.
코드 동작 원리
Demo라는 이름의 클래스가 정의되어 있으며, 그 안에 main 함수가 포함되어 있습니다. main 함수에서는 먼저 문자열 객체 my_str이 선언됩니다.
이후 다음과 같은 단계를 거쳐 중복 단어가 제거됩니다.
- split("\\s+") : 문자열을 하나 이상의 공백을 기준으로 분리하여 단어 배열을 생성합니다.
- Arrays.stream() : 생성된 단어 배열을 스트림 형태로 변환합니다.
- distinct() : 스트림에서 중복된 요소를 걸러냅니다.
- Collectors.joining(" ") : 남은 단어들을 공백으로 구분하여 하나의 문자열로 합칩니다.
최종 결과는 콘솔에 출력되며, 원래 문장에서 반복되었던 "is", "a", "sample"이 각각 한 번씩만 나타나는 것을 확인할 수 있습니다.
참고 사항
이 방법은 대소문자를 구분하기 때문에 "This"와 "this"는 서로 다른 단어로 취급됩니다. 대소문자와 관계없이 중복을 제거하고 싶다면, 단어를 분리한 뒤 모두 소문자(또는 대문자)로 변환한 후 distinct()를 적용하는 추가 처리가 필요합니다.