본문 바로가기
Java/About Java

[Java] 배열, 리스트에서 요소 개수 찾기

by seaweed_one 2023. 10. 15.
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