일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java
- json
- Eclipse
- Visual Studio Code
- CSS
- list
- 자바스크립트
- Files
- 배열
- Array
- input
- date
- 문자열
- ArrayList
- 테이블
- IntelliJ
- CMD
- html
- table
- Maven
- js
- javascript
- 인텔리제이
- Button
- 자바
- string
- 이클립스
- 이탈리아
- vscode
- windows
- Today
- Total
어제 오늘 내일
[Java] ArrayList 중복 값 개수 세기 본문
- Collections.frequency() 이용하기
- Map 이용하기
1. Collections.frequency() 이용하기
public static int frequency(Collection<?> c, Object o)
위 메소드는
첫번째 파라미터로 전달된, Collection 객체에서
두번째 파라미터로 전달된 Object와 같은 값이 몇번이나 포함되어 있는지 찾아서
횟수를 리턴합니다.
파라미터로 전달된 값과 Collection 객체의 원소가 같은지 여부는
equals() 메소드를 사용하여 판단합니다.
Collections.frequency() 이용해서 특정 값 개수 세기
예제
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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]
// "A" 빈도수
int aFrequency = Collections.frequency(list, "A");
System.out.println(aFrequency); // 3
// "B" 빈도수
int bFrequency = Collections.frequency(list, "B");
System.out.println(bFrequency); // 2
// "C" 빈도수
int cFrequency = Collections.frequency(list, "C");
System.out.println(cFrequency); // 1
// "D" 빈도수
int dFrequency = Collections.frequency(list, "D");
System.out.println(dFrequency); // 0
}
}
Collections.frequency() 메소드에
대상 ArrayList와 찾으려는 값을 전달하여 빈도수를 출력하였습니다.
Collections.frequency() 이용해서 전체 ArrayList의 중복 값 개수 세기
예제
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
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 원소 빈도수 출력
Set<String> set = new HashSet<String>(list);
for (String str : set) {
System.out.println(str + " : " + Collections.frequency(list, str));
}
}
}
결과
원본 : [A, B, C, A, B, A]
A : 3
B : 2
C : 1
Set<String> set = new HashSet<String>(list);
ArrayList의 모든 원소의 빈도수를 출력하기 위해서
ArrayList를 중복이 없는 Collection 객체인 HashSet으로 변경하였습니다.
for(String str : set) {
System.out.println(str + " : " + Collections.frequency(list, str));
}
HashSet을 순회하면서,
각 값의 빈도수를 Collections.frequency() 메소드를 이용하여 계산하였습니다.
2. Map 이용하기
반복문을 이용하여 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 값이 추가되면, 값을 덮어씁니다.)
ArrayList의 중복값 개수를 확인하는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] HashMap에 특정 key 존재 여부 확인하기 (0) | 2021.05.18 |
---|---|
[Java] HashMap key, value 전체 출력하기 (1) | 2021.05.17 |
[Java] ArrayList 값 중 최대값, 최소값 구하기 (0) | 2021.05.17 |
[Java] ArrayList 거꾸로 뒤집기 (0) | 2021.05.16 |
[Java] ArrayList 정렬하기 (오름차순, 내림차순, 사용자 정의) (5) | 2021.05.16 |