한 문장 안에서 사용된 distinct 문자의 개수를 구해야 한다면 어떻게 할 수 있을까요?
stream이 나오기 전이었다면 그저 String을 캐릭터 배열로 만들어서 loop를 돌려 set에 넣은 뒤 set의 사이즈를 구하면 됐겠죠.
아래처럼 말이죠.
String sentence = "Computer users take it for granted that their systems can do more than one thing at a time.";
Set<Character> s = new HashSet<>();
for (char c : sentence.toCharArray()) {
s.add(c);
}
System.out.println(s.size());
하지만 stream 을 이용하면 한줄로 해결이 가능합니다.
stream에는 distinct() 메서드가 있으며 이는 해당 스트림내에서 distinct한 것들만 추출해줍니다. 그리고 count()메서드를 이용하여 그 개수를 셀 수 있습니다.
그래서 위에서 set과 for-loop를 사용한 부분을 stream을 이용하여 한줄로 줄이면 아래와 같이 바꿀 수 있습니다.
String sentence = "Computer users take it for granted that their systems can do more than one thing at a time.";
long distinctCharsCount = sentence.chars().distinct().count();
System.out.println(distinctCharsCount);
훨씬 간단하게 구할 수 있습니다.
[jQuery] 라디오 버튼/ 체크박스 해제하기 (0) | 2021.01.18 |
---|---|
HTML checkbox를 이용한 토글 버튼에 자바스크립트로 기능 넣기 (소스코드포함) (0) | 2019.07.10 |
[Javascript / 자바스크립트] 강좌 #22 - Image Map ( 이미지 맵 ) (0) | 2015.08.05 |
[Javascript / 자바스크립트] 강좌 #21 - Navigator ( 브라우저 판별/구분하기 ) (0) | 2015.08.05 |
[Javascript / 자바스크립트] 강좌 #20 - Multimedia ( 멀티미디어, 음악, 동영상 ) (0) | 2015.08.05 |
- 현재 디렉토리 하위의 모든 file 타입 개수 구하기
find . -type f|wc -l
- 현재 디렉토리 하위의 모든 디렉토리에서 파일 확장자가 class인 파일 개수 구하기
find . -name '*.class' | wc -l
[리눅스] war/jar 파일에 새 파일 추가 또는 변경 하기 (0) | 2017.11.09 |
---|---|
리눅스에서 명령어 히스토리 조회 할 때 날짜 및 시간 함께 표시하기 (0) | 2017.11.02 |
[리눅스] 정규표현식을 이용한 파일 삭제 (0) | 2015.10.14 |
TOP 명령어, 필드 정보 및 옵션 (0) | 2015.10.01 |
CentOS 6 리눅스에서 alternatives를 이용한 기본 자바 설정 (0) | 2015.06.11 |