728x90
안녕하세요.
오늘은 배열 또는 리스트에서 원하는 요소의 개수를 찾는 방법에 대해 포스팅하려고 합니다.
바로 Collections.frequency() 함수입니다.
Collections.frequency(Collection<?> c, Object o)
frequency 함수는 Collection 객체에서 Object와 같은 값이 몇번 포함되어 있는지 횟수를 찾아 반환합니다.
public static int frequency(Collection<?> c, Object o) {
int result = 0;
Iterator var3;
Object e;
if (o == null) {
var3 = c.iterator();
while(var3.hasNext()) {
e = var3.next();
if (e == null) {
++result;
}
}
} else {
var3 = c.iterator();
while(var3.hasNext()) {
e = var3.next();
if (o.equals(e)) {
++result;
}
}
}
return result;
}
내부 로직을 살펴보면 함수 내부에서 equals 를 이용해 비교를 수행합니다.
활용 방법을 알아볼까요?
public static void main(String[] args) {
String inputString = "helloWorld! Im seaweed.";
List<String> arr = Arrays.asList(inputString.split(""));
String findStr = "l";
int strCnt = Collections.frequency(arr, findStr);
System.out.println(findStr + " : " + strCnt);
}
위와 같이 사용해 문자열에서 특정 단어 혹은 알파벳의 개수를 찾을 수도 있습니다.
for 문과 함께 사용하면 전체 문자열에 알파벳 개수를 셀 수도 있습니다.
public static void main(String[] args) {
String inputString = "helloWorld.ImSeaweed.";
List<String> arr = Arrays.asList(inputString.split(""));
Set<String> stringSet = new HashSet<>(arr);
for (String str : stringSet){
int strCnt = Collections.frequency(arr, str);
System.out.println(str + " : " + strCnt);
}
}
출력된 결과는 아래와 같은데요.
결과를 보시고 눈치채셨겠지만 대소문자는 별개로 취급되니 사용 시 참고해주세요~
728x90
'Java > About Java' 카테고리의 다른 글
[Java] 정규표현식, Lookaround(Lookahead & Lookbehind) (3) | 2023.10.15 |
---|---|
[Java] 직렬화와 역직렬화 (0) | 2023.02.21 |
[Java] Immutable Object (0) | 2023.02.14 |
[Java] 얕은 복사 & 깊은 복사 & 방어적 복사 (0) | 2023.02.13 |
[Java] 객체 - 클래스 (0) | 2023.02.06 |