더북(TheBook)

마지막으로 자바 8 함수형 스타일 해법을 살펴보자. 다음 네 단계를 거친다.

1. String.chars() 메서드를 사용해 문자열을 IntStream으로 변환한다.

2. IntStream을 필터링해 중복을 제거한다.

3. 결과 IntStreamStream<String>으로 매핑한다.

4. 이 스트림의 문자열을 조인해 하나의 문자열로 모은다.

위 해법을 코드로 작성하면 다음과 같다.

public static String removeCharacter(String str, char ch) {
  return str.chars()
    .filter(c -> c != ch)
    .mapToObj(c -> String.valueOf((char) c))
    .collect(Collectors.joining());
}

이 밖에 유니코드 대리 쌍을 삭제하려면 다음 구현처럼 codePointAt()codePoints()를 이용한다.

public static String removeCharacter(String str, String ch) {
   int codePoint = ch.codePointAt(0);

   return str.codePoints()
     .filter(c -> c != codePoint)
     .mapToObj(c -> String.valueOf(Character.toChars(c)))
     .collect(Collectors.joining());
}

TIP ≣ 외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.remove()를 활용한다.

다음으로 빈도수가 가장 큰 문자를 어떻게 찾는지 알아보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.