JAVA

ArrayList 중복 값 개수 세기(부제: Map 자료구조)

쿠카이든 2022. 7. 11. 15:56
728x90
  • 반복문을 이용하여 HashMap 객체에 key(원소), value(중복 횟수) 형식으로 저장하고 출력하는 방법입니다.

  예제  

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class ArrayListDupCheck {
	public static void main(String[] args) {
        // ArrayList 준비
        ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "A", "B", "A"));
        System.out.println("원본 : " + list); // [A, B, C, A, B, A]

        // ArrayList 원소 빈도수를 Map에 저장
        Map<String, Integer> map = new HashMap<String, Integer>();
        for (String str : list) {
            Integer count = map.get(str);
            	if (count == null) {
                    map.put(str, 1);
                } else {
                    map.put(str, count + 1);
                }
    	    }

        // Map 출력
        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

  결과  

 
원본 : [A, B, C, A, B, A]
 
A : 3
 
B : 2
 
C : 1

Map<String, Integer> map = new HashMap<String, Integer>();

ArrayList 원소와 중복 횟수를 저장할 HashMap 객체를 준비합니다.

 

for (String str : list) {
    Integer count = map.get(str);

    if (count == null) {
        map.put(str, 1);
    } else {
        map.put(str, count + 1);
    }
}

 

ArrayList를 순회하면서 

ArrayList의 원소가 HashMap 객체에 key로 들어있는지 확인하고,

만약 없으면, 

value(중복 횟수)를 1로 세팅하고 HashMap에 추가합니다.

만약 있으면, 중복되는 데이터 이므로,

value(중복 횟수)를 1 증가시켜서 HashMap에 추가합니다.

(HashMap은 key의 중복을 허용하지 않으므로, 같은 key 값이 추가되면, 값을 덮어씁니다.)

 

출처: https://hianna.tistory.com/572 [어제 오늘 내일:티스토리]

728x90

'JAVA' 카테고리의 다른 글

HashMap 사용 방법 및 예제  (0) 2022.08.16
ZonedDateTime과 LocalDateTime의 차이  (0) 2022.08.05
다형성(Polymorphism)  (0) 2022.06.21
Optional.of 와 Optional.ofNullable 의 차이  (0) 2022.05.13
롬복(lombok) .. 그 기능에 관해서  (0) 2022.03.31