어레이 리스트를 sql 쿼리에서 처럼 그룹바이 하고 카운트 등을 하기 위한 코드 입니다.
어레이 리스트는
{아이디,이름,A}
{아이디,이름,A}
{아이디,이름,B}
{아이디,이름,B}
{아이디,이름,B}
이러한 식으로 된 리스트 받아서
{A,2}
{B,3}
을 반환하는 예제 입니다.
이하 자바소스
############################################################
/**
* 리스트 2 디스팅트_리스트
*
* @param List
* @return List
* @throws Exception
*/
public List getCenterDistinctList(List objList) throws Exception {
List issList = new ArrayList();
try{
HashMap objMap = new HashMap();
HashMap issMap = new HashMap();
int objListSize = objList.size();
//System.out.println("###############");
//System.out.println("##objListSize : "+ objListSize);
//System.out.println("###############");
String CENTER = ""; //센터코드
String CENTER2 = ""; //중복카운트 위함.
int TOTAL_WORK = 1;
int maxSeq = this.getCenterIssueMaxNum()+1; //센터현황 최대시퀀스값
for (int i=0 ; i<objListSize ; i++) { //배열은 0부터 시작. 리스트 사이즈 만큼 돌린다.
objMap = (HashMap) objList.get(i); //리스트에서 뽑아낸 오브젝트를 HashMap으로 캐스트.
issMap = new HashMap();
CENTER = (String)objMap.get("CENTER");
if ( CENTER.equals(CENTER2) ){ //현재 가져온 센터코드와 바로전 센터코드를 비교하여 중복이면 TRUE
TOTAL_WORK = TOTAL_WORK+1; //대상국소수를 증가한다.
issList.remove(issList.size()-1); //바로 전 해시맵 오브젝트를 지운다.
}else{ //현재 가져온 센터코드와 바로전 센터코드를 비교하여 중복이면 TRUE
TOTAL_WORK = 1; //국소수를 리셋한다.
}
issMap.put("CENTER", objMap.get("CENTER")); //현재의 해시맵 오브젝트를 추가한다.(센터코드))
issMap.put("TOTAL_WORK", TOTAL_WORK+""); //현재의 해시맵 오브젝트를 추가한다.(대상국소수)
issMap.put("ISSUE_SEQ", maxSeq+issList.size()+""); //시퀀스 뽑아내기
issList.add(issMap); //위에서 만든 해시맵 오브젝트를 리스트에 추가한다.
CENTER2 = (String)objMap.get("CENTER");
}
//System.out.println("###############");
//System.out.println("#getCenterDistinctList#");
//System.out.println(issList);
//System.out.println("###############");
}catch(Exception e){
e.printStackTrace();
}
return issList;
}
'IT > 프로그래밍' 카테고리의 다른 글
[VB] 옵션버튼 배열 처리 (0) | 2011.10.27 |
---|---|
[VB] Far Point Spread Sheet Action 정리 (from devpia) (0) | 2011.10.27 |
[자바] 엑셀을 List로 변환 (0) | 2011.10.27 |
[스트럿츠] 이클립스 시스템 상세 로그를 보려면... (0) | 2011.10.27 |
log4sql.jar SQL 로깅 기능 개선 (0) | 2011.10.27 |