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]