[JAVA8] 람다식을 이용하여 Sorting 하기


 public class SortVO {

 // 숫자 비교를 하기위해 int 가 아닌 Integer로 선언
 Integer no;
 String name;

 public Integer getNo(){
  return no;
 }

 public void setNo( Integer no ){
  this.no = no;
 }

 public String getName(){
  return name;
 }

 public void setName( String name ){
  this.name = name;
 }

}


public class LambdaSortingTest {

  public static void main( String[] args ){

   SortVO st1 = new SortVO();
   SortVO st2 = new SortVO();
   SortVO st3 = new SortVO();
   SortVO st4 = new SortVO();
   SortVO st5 = new SortVO();
   SortVO st6 = new SortVO();

   st1.setNo(111);
   st2.setNo(212);
   st3.setNo(3232);
   st4.setNo(443);
   st5.setNo(5);
   st6.setNo(622);

   List list = new ArrayList<>();
   list.add(st1);
   list.add(st2);
   list.add(st3);
   list.add(st4);
   list.add(st5);
   list.add(st6);

   System.out.println("<< Integer List >>");
   list = list.stream().sorted(( e1, e2 ) -> e1.getNo().compareTo(e2.getNo())).collect(Collectors.toList());
   list.forEach(e -> System.out.println(e.getNo()));


   //<< Integer List >>
   //5
   //111
   //212
   //443
   //622
   //3232

   st1.setName("111");
   st2.setName("212");
   st3.setName("3232");
   st4.setName("443");
   st5.setName("5");
   st6.setName("622");

   List list2 = new ArrayList<>();
   list2.add(st1);
   list2.add(st2);
   list2.add(st3);
   list2.add(st4);
   list2.add(st5);
   list2.add(st6);


    System.out.println("<< String List >>");
    list2 = list2.stream().sorted(( e1, e2 ) -> e1.getName().compareTo(e2.getName())).collect(Collectors.toList());
    list2.forEach(e -> System.out.println(e.getName()));


   //<< String List >>
   //111
   //212
   //3232
   //443
   //5
   //622

   //당연한 결과이지만 숫자와 문자는 Sorting 시 다른 결과가 나온다. 
   //하지만, 작업을 하다보면 실수를 할 수 있으니 sorting 후에 결과를 항상 확인해 보는 것이 필요하다.

  }

}


댓글

이 블로그의 인기 게시물

[JDBC] 쿼리 후에 ResultSet 에 데이터가 있는지 확인하는 방법

[Android] Android 로깅 시 isLoggable() 메서드 사용

[Spring] @PropertySource and Environment 사용시 Property 값이 null 로 들어오는 경우