Java

[Java] 자바 ArrayList, List의 객체별(object) 항목별(item) 카운팅(count) 통계값 획득하는 방법

자바 ArrayList 항목별(item),객체별(object) 카운팅, 즉 통계정보를 구현해봅니다. 리스트 항목에 중복되는 항목(아이템)이 있는 경우 카운트하여 볼 수 있습니다. 중복되는 건 없이 모두 1건씩만 있다면 통계정보는 의미 없구요. 대부분 이런 작업은 SQL를 통해서 처리합니다. 통계정보 쿼리를 작성하는 것이 더 빠르게 처리할 수 있습니다. 하지만 SQL를 사용할 수 없는 상황이라면 유용하게 처리할 수 있습니다. 문제는 처리속도입니다. 28,400건을 처리해보려고 시도했으나 가비지컬렉션이 발생하기 시작하더니 뻣어버렸습니다. ㅎㅎㅎ 리스트의 데이터가 많이 없을 경우에 사용해야 될 것 같습니다. 아 파이썬은 빠를까요? 나중에 시도해봐야겠네요.

 

리스트 항목 카운팅

다음 코드 스니펫과 같이 중복값의 Ineger형 리스트를 값으로 갖는 어레이리스트가 있습니다.

Collections클래스의 frequency()메서드를 사용하여 리스트 항목별 카운트를 구할 수 있습니다. 그리고 그 결과를 HashMap에 담은 후 출력해보는 예제 코드 입니다.

package edu.sample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ArrayListStatic {

	public static void main(String[] args) {
		List<List<Integer>> arrayList = new ArrayList<>();
		
		arrayList.add(new ArrayList<>(Arrays.asList(1,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(21,13)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(15,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(35,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(5,3,1)));
		arrayList.add(new ArrayList<>(Arrays.asList(25,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(15,3)));
		arrayList.add(new ArrayList<>(Arrays.asList(25,29)));
		arrayList.add(new ArrayList<>(Arrays.asList(25,29)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		arrayList.add(new ArrayList<>(Arrays.asList(25,29)));
		arrayList.add(new ArrayList<>(Arrays.asList(1,5)));
		
		Map<List<Integer>, Integer> resultMap = new HashMap<>();

        //카운팅
		for (int x = 0; x < arrayList.size(); x++) {
        	resultMap.put(arrayList.get(x), Collections.frequency(arrayList,arrayList.get(x)));
        }
        
		//키값 출력
		System.out.println("키값: " + resultMap.keySet());
		
		//1,3 리스트 객체의 카운트 출력
		System.out.println("1,5 리스트 객체의 카운트: " + resultMap.get(new ArrayList<>(Arrays.asList(1,5))));
		
		//출력
		System.out.println(resultMap);
	}

}

[코드 실행결과]

키값: [[35, 3], [5, 3, 1], [1, 3], [1, 5], [15, 3], [25, 29], [21, 13], [25, 3]]
1,5 리스트 객체의 카운트: 8
{[35, 3]=1, [5, 3, 1]=1, [1, 3]=2, [1, 5]=8, [15, 3]=2, [25, 29]=3, [21, 13]=1, [25, 3]=1}

데이터가 많은 경우 딜레이가 길어질 수 있음으로 속도를 요구하는 어플리케이션이나 웹사이트에서는 사용에 유의하세요..

[관련글 더 보기]

[Java] 자바 ArrayList 중복 값 제거하기 (HashSet, Stream, TreeSet)

 

[Java] 자바 ArrayList 중복 값 제거하기 (HashSet, Stream, TreeSet)

ArrayList의 중복 값을 제거하는 방법 1.ArrayList의 데이터를 contains() 메소드를 사용하여 중복 값을 제거 2.Stream의 distinct() 메소드를 사용하여 중복 값을 제거 3.HashSet, TreeSet을 사용하여 중복 값을..

playground.naragara.com

[Java] 자바 ArrayList, List 두 리스트 값 비교 방법 총 정리

 

 

[Java] 자바 ArrayList, List 두 리스트 값 비교 방법 총 정리

두 개의 리스트에 대한 값 비교 방법에 대해 알아보자. 1.containsAll()메소드를 사용하는 방법 2.Arrays.equals()메소드를 사용 3.ArrayList를 Collection으로 변환 후 removeAll()메소드를 사용하는 방법 4.cont..

playground.naragara.com

[Java] 자바 ArrayList, List 오름차순, 내림차순 정렬 예제코드

 

[Java] 자바 ArrayList, List 오름차순, 내림차순 정렬 예제코드

ArrayList 값 정렬을 해보려고 합니다. 자바에서 제공하는 라이브러리를 사용하면 쉽게 가능 합니다. Collections.sort(), Collections.reverseOrder() 메소드를 사용하거나 Comparator.naturalOrder(), Comparat..

playground.naragara.com

[Java] 자바 ArrayList 사용방법 및 예제

 

[Java] 자바 ArrayList 사용방법 및 예제

ArrayList는 자바에서 데이터 처리시 가장 많이 사용하는 클래스로 반드시 알고 있어야 개발할때 유용하다. ■ArrayList 선언 방법 package edu.sample; import java.util.ArrayList; public class arrayListExamp..

playground.naragara.com

 

Leave a Reply

error: Content is protected !!