Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

sort 관련(vo)

Language/Java 2014.03.19 23:22
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



이번 포스팅은 sort 관련 입니다. 

특히, vo sortting 하는 것을 한번 알아 보겠습니다.


우선 테스트로 vo를 만들어 List에 담고나서 제대로 담겼는지 size를 한번 재보도록 하겠습니다.


[간단 테스트 소스 작성 시작!]           

       @Test

       public void insertVo(){

testList = new ArrayList<TestVo>();

System.out.println("List Size(1) :"+testList.size());

for(int i=0; i < 2; i++){

testVo = new TestVo();

if(i == 0){

  testVo.setIndexKey("DSP001"); 

  testVo.setSortStandard("330");

}else{

testVo.setIndexKey("DSP002");

testVo.setSortStandard("120");

}

testList.add(testVo);

}

System.out.println("List Size(2) :"+testList.size());

} 


결과

 List Size(1) :0 

 List Size(2) :2


 2개의 데이터가 들어가 있군요^-^good~의심이 되신다면! Debug mode로 확인 해 보세용~ 



SORT를 이제 해볼까용?


[전체 소스]

package kr.pe.acet.voSort;

import static org.junit.Assert.*;


import java.util.ArrayList;

import java.util.List;


import org.junit.Before;

import org.junit.Test;


public class VoSortTest {

private TestVo testVo;

List<TestVo> testList;


@Before

public void insertVo(){

testList = new ArrayList<TestVo>();

System.out.println("List Size(1) :"+testList.size());

for(int i=0; i < 2; i++){

testVo = new TestVo();

if(i == 0){

  testVo.setIndexKey("DSP001");

  testVo.setSortStandard("330");

  testVo.setItem("snack");

}else{

testVo.setIndexKey("DSP002");

testVo.setSortStandard("120");

testVo.setItem("ice-cream");

}

testList.add(testVo);

}

System.out.println("List Size(2) :"+testList.size());

}

@Test

public void voSortTest() {

  // List > Vo > String   

  List<String> sortTargetList = new ArrayList<String>();

  for(int l=0; l < testList.size(); l++){

  sortTargetList.add(testList.get(l).getSortStandard());

  }

       Object[] notSortedArray = sortTargetList.toArray();

       java.util.Arrays.sort(notSortedArray);

      // System.out.println(java.util.Arrays.asList(notSortedArray));

       // [120, 330]

       

       for(int t=0; t < 2; t++){

     System.out.println(notSortedArray[t]);

          for(int t2=0; t2 < testList.size(); t2++){

         if(testList.get(t2).getSortStandard().equals(notSortedArray[t])){ 

                 // 이미 정렬되어진 배열에서 하나 꺼내와서 for문을 돌면서 vo들과 비교를 합니다.

                 // 비교를 하면서 OK!이면 아래처럼 정보를 빼내 옵니다.

         System.out.println(testList.get(t2).getIndexKey()+"|"+testList.get(t2).getItem()+"|"+testList.get(t2).getSortStandard());

         /*

          * private String indexKey;

private String sortStandard;

private String item; 

          * 

          */

         

         }

          }

       }


}


}

 



[결과]

List Size(1) :0

List Size(2) :2

120

DSP002|ice-cream|120

330

DSP001|snack|330 



[참고 소스]

    Array.class

      /**     

     * Sorts the specified array of objects into ascending order, according to

     * the {@linkplain Comparable natural ordering}

     * of its elements.  All elements in the array

     * must implement the {@link Comparable} interface.  Furthermore, all

     * elements in the array must be <i>mutually comparable</i> (that is,

     * <tt>e1.compareTo(e2)</tt> must not throw a <tt>ClassCastException</tt>

     * for any elements <tt>e1</tt> and <tt>e2</tt> in the array).<p>

     *

     * This sort is guaranteed to be <i>stable</i>:  equal elements will

     * not be reordered as a result of the sort.<p>

     *

     * The sorting algorithm is a modified mergesort (in which the merge is

     * omitted if the highest element in the low sublist is less than the

     * lowest element in the high sublist).  This algorithm offers guaranteed

     * n*log(n) performance.

     *

     * @param a the array to be sorted

     * @throws  ClassCastException if the array contains elements that are not

     * <i>mutually comparable</i> (for example, strings and integers).

     */

    public static void sort(Object[] a) {

        Object[] aux = (Object[])a.clone();

        mergeSort(aux, a, 0, a.length, 0);

    } 


um..위와 같이 하면 끝일까요??


아닙니다~만약에~만약에 120 330 330 330 이런식으로 있다면? 맞습니다. sortting의 기준이 중복이 된다면

그다음에는 무엇으로 정렬을 해야하는지도 정해줘야 할 것 같습니다.


보통 쇼핑몰 같은 곳에서는 검색엔진을 사용하는데.. 미리 수집되어진 SCD라는 것이 있습니다.

요녀석들의 각각의 태그에 가중치를 부여 할 수 있습니다.  그래서 가중치로 순서가 정해 집니다. 

즉, sort+가중치겠죠..^^;

뭐..검색엔진 마다 다를 수도 있겠지만..제 경험상은 그러합니다.


즉, 이중 정렬도 고려해볼 필요가 있을 것 같습니다.

그리고 정렬을 120 330 이 아닌 330 120 이런 순서로 하려면???  

아시는 분은 댓글을 통한 소통을 부탁드립니다 (- - * (__* ~꾸벅

그럼 이만..ㅌㅌㅌ


                           - END -



'Language > Java' 카테고리의 다른 글

Version Interface  (0) 2014.06.19
[Java] JVM 메모리 구조  (0) 2014.05.15
sort 관련(vo)  (0) 2014.03.19
단어 카운트 - 첫번째에 걸리는 것만..  (0) 2014.03.19
[Ace-T의 기초튼튼] for문 잘 알고 쓰자  (0) 2013.12.16
java 정규표현식 - String의 숫자문자 검증  (0) 2013.09.12

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바