'list'에 해당되는 글 2건

  1. 2011.10.27 [자바] List 중복제거 (Distinct List)
  2. 2011.10.27 [자바] 엑셀을 List로 변환

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


/*

메서드 부분만 정의하였습니다.

에러나는 부분은 임포트 하여 사용하세요.

*/

 


 /**
  * 특정 엑셀 파일을 List에 Object[]로 컨버트 한다.
  * @param FileName  불러들일 엑셀 파일명
  * @param SheetNum   불러들일 엑셀 시트 인덱스
  * @return Hash(key 는 각 셀번호가 된다.) 로 묶인 Vector Data
  */
 public List getExcel2List(String FileName, int SheetNum){
 List lst = new ArrayList();
 try{
  POIFSFileSystem fs   =   new POIFSFileSystem(new FileInputStream(FileName));
  HSSFWorkbook wb = new HSSFWorkbook(fs);
  HSSFSheet sheet = wb.getSheetAt(SheetNum);
  Iterator iter = sheet.rowIterator();

  while(iter.hasNext()){
   HSSFRow row = (HSSFRow)iter.next();
   HashMap tdHash = new HashMap();
   //Object[] objs = new Object[row.getPhysicalNumberOfCells()];
   //System.out.println(row.getPhysicalNumberOfCells());
   Iterator cellIter = row.cellIterator();
   while(cellIter.hasNext()){
    HSSFCell cell = (HSSFCell)cellIter.next();
                Object obj = null;
                int celltype = cell.getCellType();
                
                switch(celltype){
                 case HSSFCell.CELL_TYPE_STRING :
                  obj = cell.getStringCellValue();
                  break;
                 case HSSFCell.CELL_TYPE_NUMERIC :
                  obj = new Double(cell.getNumericCellValue());
                  break;
                 case HSSFCell.CELL_TYPE_BOOLEAN :
                  obj = new Boolean(cell.getBooleanCellValue());
                  break;
                 case HSSFCell.CELL_TYPE_ERROR :
                  obj = new Byte(cell.getErrorCellValue());
                  break;
                 default :
                  //obj = null;
                  obj =""; 
                 break;
                }
                tdHash.put(new Short(cell.getCellNum()),  obj);
   }
   lst.add(tdHash);
  }
        System.out.println("###################");
  System.out.println("lst:"+lst.toString());
  System.out.println("###################");
 }catch(Exception e){
  e.printStackTrace();
 }
 return lst;
 }


Posted by bestrok
,