> Java > java지도 시간 > Java에서 문자열의 다른 문자와 숫자를 얻는 방법

Java에서 문자열의 다른 문자와 숫자를 얻는 방법

王林
풀어 주다: 2023-04-20 12:04:06
앞으로
1874명이 탐색했습니다.

문자열에서 다양한 문자와 숫자를 얻는 방법

이 질문은 두 단계로 나눌 수 있습니다. 첫 번째 단계는 다른 문자를 찾는 것이고, 두 번째 단계는 숫자를 세는 것입니다. 좀 말도 안되는 것 같죠? 먼저 답변을 드리겠습니다.

public class DistinctCharsCount {     public static void main(String[] args) {         printDistinctCharsWithCount("itwanger");         printDistinctCharsWithCount("chenmowanger");     }      private static void printDistinctCharsWithCount(String input) {         Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();          for (char c : input.toCharArray()) {             Integer oldValue = charsWithCountMap.get(c);              int newValue = (oldValue == null) ? 1 :                     Integer.sum(oldValue, 1);              charsWithCountMap.put(c, newValue);         }         System.out.println(charsWithCountMap);     } }
로그인 후 복사

프로그램의 출력 결과는 다음과 같습니다.

{i=1, t=1, w=1, a=1, n=1, g=1, e=1, r=1} {c=1, h=1, e=2, n=2, m=1, o=1, w=1, a=1, g=1, r=1}
로그인 후 복사

내 아이디어에 대해 이야기하겠습니다.

1) LinkedHashMap을 선언하거나 HashMap을 사용할 수 있지만 전자는 분할 후 문자열 순서를 유지할 수 있으며 결과는 한눈에 더 명확해 보입니다.

Map을 사용하는 이유는 Map의 키는 반복이 허용되지 않고, 반복되는 문자 수만 누적될 수 있기 때문입니다.

2) 문자열을 문자로 분할하고 순회합니다.

3) 키가 null이면 해당 숫자가 +1이라는 의미이고, 그렇지 않으면 이전 값에 +1이 추가된 다음 다시 맵에 입력되어 이전 문자 수를 덮어씁니다.

생각이 너무 명확하죠? 박수를 보내지 않을 수 없네요.

JDK 8 이후 Map에는 여러 키에 값을 한 번에 할당하는 매우 강력한 메소드 merge()가 추가되었습니다.

private static void printDistinctCharsWithCountMerge(String input) {     Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();      for (char c : input.toCharArray()) {         charsWithCountMap.merge(c, 1, Integer::sum);     }     System.out.println(charsWithCountMap); }
로그인 후 복사

한 줄의 코드로 매우 강력하지 않나요? 첫 번째 매개변수는 키, 두 번째 매개변수는 값, 세 번째 매개변수는 BiFunction입니다. 즉, 키가 이미 존재하는 경우 BiFunction을 기반으로 새 값을 다시 계산한다는 의미입니다.

문자가 처음으로 나타나면 값을 1로 할당하고, 그렇지 않으면 이전 값을 1로 합산합니다.

위 내용은 Java에서 문자열의 다른 문자와 숫자를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿