메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


*출처 : http://forum.falinux.com/zbxe/index.php?document_srl=572949&mid=lecture_tip


Test2.java소스

package com.gooper.icbms.sda.comm.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
  
  
public class Test2 {
  
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<User> users = getCreateUsers();
  
        System.out.println("===== 정렬 하기전 =====");
        for (User temp : users) {
            System.out.println(temp);
        }
  
        Collections.sort(users, new NameAscCompare());
        System.out.printf("nn===== 이름 오름 차순 정렬 =====n");
        for (User temp : users) {
            System.out.println(temp);
        }
  
        Collections.sort(users, new NameDescCompare());
        System.out.printf("nn===== 이름 내림 차순 정렬 =====n");
        for (User temp : users) {
            System.out.println(temp);
        }
  
        Collections.sort(users, new NoAscCompare());
        System.out.printf("nn===== No 오름 차순 정렬 =====n");
        for (User temp : users) {
            System.out.println(temp);
        }
  
        Collections.sort(users, new NoDescCompare());
        System.out.printf("nn===== No 내림 차순 정렬 =====n");
        for (User temp : users) {
            System.out.println(temp);
        }

        Collections.sort(users, new NameAscNoDescCompare());
        System.out.printf("nn===== Name asc + No desc 정렬 =====n");
        for (User temp : users) {
            System.out.println(temp);
        }

        
    }
  
  
    /**
     * User Data Create
     * @return
     */
     private static List<User> getCreateUsers() {
        // TODO Auto-generated method stub
         List<User> users = new ArrayList<User>();
  
         User user = new User();
         user.setName("고철수");
         user.setAddress("경기도 성남시 분당구");
         user.setPhone("010-1234-0192");
         user.setNo(1);
         users.add(user);

         user = new User();
         user.setName("고철수");
         user.setAddress("경기도 성남시 분당구");
         user.setPhone("010-1234-0192");
         user.setNo(5);
         users.add(user);

  
         user = new User();
         user.setName("박영희");
         user.setAddress("부산 해운대");
         user.setPhone("010-4234-0192");
         user.setNo(2);
         users.add(user);
  
  
         user = new User();
         user.setName("감수왕");
         user.setAddress("충북 제천");
         user.setPhone("010-7234-0192");
         user.setNo(3);
         users.add(user);
  
  
         user = new User();
         user.setName("이사람");
         user.setAddress("강원도 영울");
         user.setPhone("010-0234-0192");
         user.setNo(4);
         users.add(user);
        return users;
    }
  
  
     /**
      * 이름 오름차순
      * @author falbb
      *
      */
    static class NameAscCompare implements Comparator<User> {
  
        /**
         * 오름차순(ASC)
         */
        @Override
        public int compare(User arg0, User arg1) {
            // TODO Auto-generated method stub
            return arg0.getName().compareTo(arg1.getName());
        }
  
    }
    
    
    /**
     * Name asc + No desc
     * @author falbb
     *
     */
   static class NameAscNoDescCompare implements Comparator<User> {
 
       /**
        * Name으로 오름차순(ASC) 정렬후 Name이 같으면 No로 내림차순 정렬(desc)
        */
       @Override
       public int compare(User arg0, User arg1) {
    	   String name1 = arg0.getName();
    	   String name2 = arg1.getName();
    	   
    	   int ret = 0;
    	   ret = name1.compareTo(name2); 
    	   
    	   if(ret == 0) {
    		   int no1 = arg0.getNo();
    		   int no2 = arg1.getNo();
    		   if(no2 > no1) {
    			   ret = -1; 
    		   } else if(no2 > no1) {
    			   ret = 1;
    		   } else {
    			   ret = 0;
    		   }
    	   }
    	   
           return ret;
       }
 
   }

   
  
    /**
     * 이름 내림차순
     * @author falbb
     *
     */
    static class NameDescCompare implements Comparator<User> {
  
        /**
         * 내림차순(DESC)
         */
        @Override
        public int compare(User arg0, User arg1) {
            // TODO Auto-generated method stub
            return arg1.getName().compareTo(arg0.getName());
        }
  
    }
  
     /**
      * No 오름차순
      * @author falbb
      *
      */
    static class NoAscCompare implements Comparator<User> {
  
        /**
         * 오름차순(ASC)
         */
        @Override
        public int compare(User arg0, User arg1) {
            // TODO Auto-generated method stub
            return arg0.getNo() < arg1.getNo() ? -1 : arg0.getNo() > arg1.getNo() ? 1:0;
        }
  
    }
  
    /**
     * No 내림차순
     * @author falbb
     *
     */
    static class NoDescCompare implements Comparator<User> {
  
        /**
         * 내림차순(DESC)
         */
        @Override
        public int compare(User arg0, User arg1) {
            // TODO Auto-generated method stub
            return arg0.getNo() > arg1.getNo() ? -1 : arg0.getNo() < arg1.getNo() ? 1:0;
        }
  
    }
    
    static class User {
    	
		private String name;
        private String address;
        private String phone;
        private int no; 
        
        public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getAddress() {
			return address;
		}
		public void setAddress(String address) {
			this.address = address;
		}
		public String getPhone() {
			return phone;
		}
		public void setPhone(String phone) {
			this.phone = phone;
		}
		public int getNo() {
			return no;
		}
		public void setNo(int no) {
			this.no = no;
		}
		@Override
		public String toString() {
			return "User [name=" + name + ", address=" + address + ", phone="
					+ phone + ", no=" + no + "]";
		}

     }
}


* 문자열 비교compareTo처럼 숫자도 비교 해서  결과 값을 -1, 0, 1을 리턴 해주면 됩니다.

-1:작다

0:같다

1:크다


-->실행결과

===== 정렬 하기전 =====
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]


===== 이름 오름 차순 정렬 =====
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]


===== 이름 내림 차순 정렬 =====
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]


===== No 오름 차순 정렬 =====
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]


===== No 내림 차순 정렬 =====
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]


===== Name asc + No desc 정렬 =====
User [name=감수왕, address=충북 제천, phone=010-7234-0192, no=3]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=1]
User [name=고철수, address=경기도 성남시 분당구, phone=010-1234-0192, no=5]
User [name=박영희, address=부산 해운대, phone=010-4234-0192, no=2]
User [name=이사람, address=강원도 영울, phone=010-0234-0192, no=4]


번호 제목 날짜 조회 수
281 CDH 5.14.2 설치중 agent설치에서 실패하는 경우 확인/조치 2018.05.22 590
280 기준일자 이전의 hdfs 데이타를 지우는 shellscript 샘플 2019.06.14 591
279 [Hue]Hue의 메타정보를 담고 있는 desktop_document테이블과 desktop_document2의 관계 2022.05.09 591
278 [TLS/SSL]Cloudera CDH6.3.4기준 Hue TLS설정 항목 2022.05.13 594
277 CDP에서 AD와 Kerberos를 활용하여 인증 환경을 구축하는 3가지 방법 2022.06.10 594
276 [번역] solr 검색 엔진 튜토리얼 2014.10.07 596
275 [sqoop] mapper를 2이상으로 설정하기 위한 split-by컬럼을 찾을때 유용하게 활용할 수 있는 쿼리 2020.05.13 597
274 python2.7.4에서 Oracle DB(11.2)를 사용하기 위한 설정(RPM을 이용하여 RHEL 7.4에 설치) 2021.11.26 598
273 [JSON 파싱]mongodb의 document를 GSON을 이용하여 parsing할때 ObjectId값에서 오류 발생시 조치방법 2017.01.18 599
272 Mysql DB 생성 및 권한. 특정아이피, 대역에 대한 접근 허용 2017.05.04 599
271 Cassandra 3.4(3.10) 설치/설정 (5대로 clustering) 2016.04.11 600
270 oracle 12에 sqoop해서 데이터 import하기 (console에서 sqoop import하는 방법) 2021.12.31 602
269 A Cluster의 HDFS 디렉토리및 파일을 사용자및 권한 유지 하여 다운 받아서 B Cluster에 넣기 2020.05.06 603
268 hive 0.13.1 설치 + meta정보는 postgresql 9.3에 저장 2015.04.30 604
267 Oracle RAC 구성된 DB서버에 대한 컴포넌트별 설정 방법 2022.02.12 605
266 Hive MetaStore Server기동시 Could not create "increment"/"table" value-generation container SEQUENCE_TABLE since autoCreate flags do not allow it. 오류발생시 조치사항 2017.05.03 606
265 hive metastore db중 TBLS, TABLE_PARAMS테이블 설명 2021.10.22 610
264 외부 기기(usb, 하드)등 mount(연결)하기 2014.08.03 611
263 java.util.NoSuchElementException발생시 조치 2014.08.27 615
262 spark client프로그램 기동시 "Error initializing SparkContext"오류 발생할때 조치사항 2016.05.27 615
위로