메뉴 건너뛰기

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]


번호 제목 날짜 조회 수
341 Cloudera Manager에서 "Mismatched CDH versions: host has NONE but role expects 5 Suppress..."와 같이 오류 발생시 확인사항 2018.06.06 443
340 Eclipse 에서 bitbucket.org 연동 하기 file 2017.06.08 443
339 kudu hms check 사용법(예시) 2021.10.22 442
338 maven을 이용하여 Hello world 서비스 자동 생성시 HelloServiceImpl.java에서 사용하는 getMessage() 와 getName() 이 정의되지 않은 오류가 발생시 조치방법 2018.01.19 441
337 git설명 한글판 2015.12.09 440
336 oozie db변경후 재기동시 "Table 'oozie.VALIDATE_CONN' doesn't exist" 오류 발생시 조치방법 2018.05.23 439
335 CentOS6에 python3.5.1 소스코드로 빌드하여 설치하기 2016.05.27 439
334 spark 시동중 applicationHistory 로그 디렉토리가 없다고 하면서 기동되지 않는 경우 2018.06.01 436
333 우분투 16.04LTS에 Zeppelin 0.7.3설치 2018.04.18 435
332 HDFS상의 /tmp폴더에 Permission denied오류가 발생시 조치사항 2017.01.25 433
331 [TLS/SSL]Cloudera 6.3.4기준 Oozie Web UI TLS설정 항목및 설정값 2022.05.13 432
330 jena/fuseki 3.4.0 설치 2017.07.25 432
329 "You are running Cloudera Manager in non-production mode.." warning메세지가 나타나지 않게 조치하는 방법 2018.05.23 431
328 부팅을 외장하드에서 하도록 변경하는 방법 2015.07.28 430
327 cloudera서비스 중지및 기동순서 2020.02.14 428
326 [oozie] oozie shell action에서 shellscript수행결과의 2개 변수를 decision 액션에서 사용하기 2020.06.05 427
325 [sentry]role부여후 테이블명이 변경되어 오류가 발생할때 조치방법 2018.10.16 427
324 Cloudera가 사용하는 서비스별 포트 2018.03.29 427
323 bin/start-hbase.sh실행시 org.apache.hadoop.hbase.util.FileSystemVersionException: HBase file layout needs to be upgraded오류가 발생하면 조치사항 2016.08.01 427
322 [Sentry] sentry메타 DB를 이용하여 테이블에 매핑되어 있는 role명칭 찾는 방법. 2022.06.22 426
위로