2011-10-12 2 views
0

그래서 안드로이드 프로젝트에서 일하고 있는데 지금 당장 만든 캘린더를 동적으로 채우고 있습니다. 현재 동적으로 생성 된 각 셀이 데이터베이스를 열고 특정 날짜의 항목 수를 계산 한 다음 데이터베이스를 닫습니다.Java HashMap, count 같은 키 엔트리

즉, 캘린더가로드되거나 사용자가 월을 변경할 때마다 최소 28 개, 최대 42 개 데이터베이스 열기/닫기 호출을 통해 뷰를 채 웁니다.

이 문제를 해결하기 위해 해시 맵을 사용하고 커서를 채우는 데이터베이스 호출을 한 번 수행하여 커서를 가로 질러 해시 맵에 넣습니다.

내가하는 가장 쉬운 방법은 데이터베이스의 형식이 지정된 날짜를 HashMap의 키로 사용하는 것입니다. 그런 다음 얼마나 많은 항목을 알고 있어야하는지 알 수 있습니까? 동일한 키가있는 항목이 있습니까?

그렇지 않으면, 무슨 최고의, 내 다시 생각입니다 ... 커서 트래버스

, 키 존재합니까? -> No, int 값을 1로 설정하십시오. -> 예, 해당 항목의 값을 1 씩 증가 시키십시오.

고마워요!

답변

0

모든 중복 항목을 가져 오려면 또는 HashSet을 사용하여 키의 List을 검색하면됩니다. 이 질문을 참조 할 수 있습니다. Java: Detect duplicates in ArrayList?

+0

내 문제가 해결되었습니다. Hashmaps를 사용하면 Key가 이미있는 경우 Put() 함수를 사용할 때 키를 덮어 씁니다. 즉, 존재하는지 여부를 확인하기 위해 검사를 수행하여 값을 얻고 증가 된 값을 되돌려 놓습니다. 건배 – Sidious911

0

내 쿼리를 날짜별로 그룹화 한 다음 해당 결과를 해시 맵에 드롭한다고 생각합니다. 그래서, 당신은 몇 가지 이벤트 테이블을 가정

select to_char(event.date, 'yyyymmdd'), count(*) 
    from event 
    group by to_char(event.date, 'yyyymmdd') 

그런 다음, 당신이 해시 맵에 그 드롭 또는 결과 세트 반복 수 (이 오라클 구문이다).