어레이 리스트를 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;
 }

Posted by bestrok
,