메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, 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]


번호 제목 글쓴이 날짜 조회 수
399 Mysql DB 생성 및 권한. 특정아이피, 대역에 대한 접근 허용 총관리자 2017.05.04 60
398 Hive MetaStore Server기동시 Could not create "increment"/"table" value-generation container SEQUENCE_TABLE since autoCreate flags do not allow it. 오류발생시 조치사항 총관리자 2017.05.03 341
397 Ubuntu 16.04 LTS에 Hive 2.1.1설치하면서 "Version information not found in metastore"발생하는 오류원인및 조치사항 총관리자 2017.05.03 469
396 우분투에서 패키지 설치시 E: Sub-process /usr/bin/dpkg returned an error code 발생시 조치 총관리자 2017.05.02 251
395 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적(?)으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 총관리자 2017.05.02 77
394 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 총관리자 2017.05.02 117
393 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 총관리자 2017.05.02 51
392 hadoop에서 yarn jar ..를 이용하여 appliction을 실행하여 정상적으로 수행되었으나 yarn UI의 어플리케이션 목록에 나타나지 않는 문제 총관리자 2017.05.02 24
391 Cleaning up the staging area file시 'cannot access' 혹은 'Directory is not writable' 발생시 조치사항 총관리자 2017.05.02 333
390 test333444 총관리자 2017.05.01 113
389 test333 총관리자 2017.05.01 189
388 test2 총관리자 2017.05.01 153
387 Ubuntu 16.04 LTS에 MariaDB 10.1설치 및 포트변경 및 원격접속 허용 총관리자 2017.05.01 1068
386 Ubuntu 16.04 LTS에 4대에 Hadoop 2.8.0설치 총관리자 2017.05.01 520
385 fuseki webUI를 통해서 전체 카운트를 하면 급격하게 메모리를 소모해 버리는 문제가 있음 file 총관리자 2017.04.28 162
384 Kafka의 API중 Consumer.createJavaConsumerConnector()를 이용하고 다수의 thread를 생성하여 Kafka broker의 topic에 접근하여 데이타를 가져오고 처리하는 예제 소스 총관리자 2017.04.26 226
383 Spark에서 KafkaUtils.createStream()를 이용하여 이용하여 kafka topic에 접근하여 객채로 저장된 값을 가져오고 처리하는 예제 소스 총관리자 2017.04.26 292
382 Hbase API를 이용하여 scan시 페이징을 고려하여 목록을 가져올때 사용할 수 있는 로직의 예시를 보여줌 총관리자 2017.04.26 238
381 linux에서 특정 포트를 사용하는 프로세스 확인하기 총관리자 2017.04.26 346
380 Spark에서 Serializable관련 오류및 조치사항 총관리자 2017.04.21 4901

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로