메뉴 건너뛰기

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]


번호 제목 글쓴이 날짜 조회 수
338 eclipse 3.1 단축키 정리파일 총관리자 2017.01.02 38
337 Halyard - RDF4J와 Apache HBase를 이용하여 구현된 TripleStore이며 SPARQL 1.1쿼리를 지원한다. 총관리자 2016.12.29 630
336 List<Map<String, String>>형태의 데이타에서 중복제거 하는 방법 총관리자 2016.12.23 1659
335 new Gson().toJson(new ObjectId())을 사용하면 값이 다르게 나오는 경우가 있음 총관리자 2016.12.23 44
334 Class.forName을 이용한 메서드 호출 샘플소스 총관리자 2016.12.21 100
333 like검색한 결과를 기준으로 집계를 수행하는 java 소스 총관리자 2016.12.19 129
332 MongoDB에 있는 특정컬럼의 값을 casting(string->integer)하여 update하기 java 소스 총관리자 2016.12.19 84
331 mongodb aggregation query를 Java code로 변환한 샘플 총관리자 2016.12.15 777
330 Collections.sort를 이용한 List<Map<String, String>>형태의 데이타 정렬 소스 총관리자 2016.12.15 45
» Collections.sort를 이용한 List<User>형태의 데이타 정렬(숫자, 문자에 대해서 각각 asc/desc및 복합정렬) 총관리자 2016.12.15 114
328 ResultSet에서 데이타를 List<Map<String,String>>형태로 만들어서 리턴하는 소스(Collections.sort를 이용한 정렬 가능) 총관리자 2016.12.15 239
327 hbase startrow와 endrow를 지정하여 검색하기 샘플 총관리자 2016.12.07 70
326 jena의 data폴더를 hadoop nfs를 이용하여 HDFS상의 폴더에 마운트 시키고 fuseki를 통하여 inert를 시도했을때 transaction 오류 발생 총관리자 2016.12.02 82
325 Jena 2.3를 Hadoop 2.7.2의 NFS로 mount하고 fuseki를 이용하여 start할때 오류 메세지 총관리자 2016.12.02 1557
324 S2RDF를 이용한 다른 버젼의 github링크 총관리자 2016.12.02 51
323 Mountable HDFS on CentOS 6.x(hadoop 2.7.2의 nfs기능을 이용) 총관리자 2016.11.24 174
322 원격의 origin/master를 기준으로 dev branch를 만들어 작업후 원격의 origin/dev에 push하는 방법 file 총관리자 2016.11.22 44
321 .gitignore파일에 지정되지 않은 파일이 ignore되는 경우 확인방법 총관리자 2016.11.22 107
320 github에 있는 프로젝트와 로컬에서 작업한 프로젝트 합치기 총관리자 2016.11.22 40
319 특정 커밋 시점(commit id를 기준으로)으로 돌리기(reset) 총관리자 2016.11.21 75

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.

위로