본문 바로가기
JAVA

[ JAVA ] TreeSet 으로 중복 제거 및 정렬 하는 법 (DTO 기준)

by 정윤재 2009. 12. 4.

 

/**
 * 실행시켜서 결과 확인하는 곳
 */
package test;
import java.util.Iterator;
import java.util.TreeSet;
/**
 * @author Yun Chae
 *
 */
public class treeTest {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  TreeSet tree = new TreeSet(new Com());
  
  tree.add(new treeDTO("0112067005","1234"));
  tree.add(new treeDTO("","1234"));
  tree.add(new treeDTO("0112067005","1234"));
  tree.add(new treeDTO("","3456"));
  tree.add(new treeDTO("01196317005","1234"));
  
  for(Iterator it = tree.iterator(); it.hasNext();) {
            //                                   
   treeDTO t1 = (treeDTO)it.next();
   
   System.out.println(t1.getMDN()+"["+t1.getIMSI()+"]");
        }
  
  
 }
}


//*******************************************************

/**
 * 데이터 집어넣는 DTO 부분
 */
package test;
import java.util.Comparator;/**
 * @author Yun Chae
 *
 */
public class treeDTO{
 String MDN;
 String IMSI;
 public treeDTO(String mdn, String imsi) {
  super();
  MDN = mdn;
  IMSI = imsi;
 }
 public String getMDN() {
  return MDN;
 }
 public void setMDN(String mdn) {
  MDN = mdn;
 }
 public String getIMSI() {
  return IMSI;
 }
 public void setIMSI(String imsi) {
  IMSI = imsi;
 }
 /* (non-Javadoc)
  * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
  */
}

//*******************************************************

/**
 *
 */
package test;
import java.util.Comparator;/**
 * @author Yun Chae
 * 비교하여 중복 제거 부분 (MDN과 IMSI 가 다 같아야 0이 return 되면서 통과한다)
 */
public class Com implements Comparator{
 /* (non-Javadoc)
  * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
  */
 public int compare(Object o1, Object o2) {
  treeDTO v1   = (treeDTO)o1;
  treeDTO v2   = (treeDTO)o2;
  
 // int x1    = v1.getMDN().compareToIgnoreCase(v1.getMDN().
 // int x2    = v1.getIMSI().compareToIgnoreCase(v2.getIMSI());
// 위와 같이 하니까 잘 안됨
result = (v1.getMDN()+v2.getMDN()).ompareToIgnoreCase(v1.getIMSI()+v2.getIMSI());  //int result   = -1;
  
 // if(x1==0 && x2 == 0){
 //  result   =  0;
 // }
  return result;
 }
}


댓글