티스토리 뷰


MyData -> ArrayList 자료가 들어있는 원본데이터
arrayList -> sort에 사용될 colums데이터를 넣는 용도
sortType -> sort가 역순인지 정순인지의 요구가 담겨있음. 0정순.1역순
sortedList -> 정렬이 완료된 데이터

   for(int i = 0 ; i < MyData.size(); i++) {
    arrayList.add("sort에 쓸 colums의 row원본 데이터");
   }//end for

   if(sortType == 0 ) {
    Collections.sort(arrayList); //이렇게 하면 그냥 정순정렬
     } else {
    Comparator comparator = Collections.reverseOrder(); //reverseOrder를 해야만 역순정렬이 된다
    Collections.sort(arrayList,comparator); //colums데이터와 윗줄의 정렬조건
   }//endif
   
   for(int j = 0; j < arrayList.size() ; j++) {
    String tmp = (String)arrayList.get(j);  //정렬된 colums의 i 번째 데이터를..
    for(int k = 0 ; k < "원본데이터".size() ; k++) {
     String tmp2 = "원본데이터.get(k).getMoney(); ";  // sort에 쓸 colums의 row 원본 데이터와
     if(tmp.equals(tmp2)) { //비교하여 같으면
      sortedList.add("원본데이터.get(k));   // 정렬완료용 변수에 해당 정렬된값과 그모든 row데이터를 해당위치
                                                                      //에 넣어 정렬을 완료 
     }
    }


//한마디로 원본데이터에서 정렬에 쓰일 한개 컬럼을 List로 뽑아서 정렬시키고
//그 정렬된 위치를 바탕으로 원본데이터의 row값을 모두 그 정렬위치에 집어넣어 최종정렬을 완료

하지만 위코드에는 결정적인 문제가 있으니....
바로 colum이 동일값을 같고있을때에는 데이터가 중복된다.
3개의 "홍길동"이 있다면 정렬한값은 "홍길동"이 9개가 나온다..
유니크한 값으로 정렬시킬때만 유용하게 쓸 수있겠다.

중복값도 정상적으로 처리하기 위해서는 tag를 붙이거나 key,value매칭을 하던지.. 뭐 그래야 한다는데...
아직 모르겠음.

[출처]http://devbible.tistory.com
[원본]http://devbible.tistory.com/14

댓글