강좌 & 팁
글 수 2,412
2012.09.08 13:01:00 (*.52.177.29)
133425
저번시간에 문자열 정렬을 해봤습니다.
이번시간에는 숫자 정렬 하는것을 해보겠습니다.
문자열 정렬 내용: http://forum.falinux.com/zbxe/?document_srl=572635
소스는 조금 추가 했습니다.
추가 한 부분만 설명 하겠습니다.
User이란 오브젝트에는 숫자가 없기 때문에 추가
public class User { private String name; private String address; private String phone; private int no; // 추가 ......
[메인소스]
추가 한 부분만 할까 하다가 전부 올립니다.
헷갈라지 않도록....^^;
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class JavaCompareTest { /** * @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("\n\n===== 문자 오름 차순 정렬 =====\n"); for (User temp : users) { System.out.println(temp); } Collections.sort(users, new NameDescCompare()); System.out.printf("\n\n===== 문자 내림 차순 정렬 =====\n"); for (User temp : users) { System.out.println(temp); } Collections.sort(users, new NoAscCompare()); System.out.printf("\n\n===== 숫자 오름 차순 정렬 =====\n"); for (User temp : users) { System.out.println(temp); } Collections.sort(users, new NoDescCompare()); System.out.printf("\n\n===== 숫자 내림 차순 정렬 =====\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-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()); } } /** * 이름 내림차순 * @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; } } }
문자열 비교compareTo처럼 숫자도 비교 해서 결과 값을 -1, 0, 1을 리턴 해주면 됩니다.
-1:작다
0:같다
1:크다
간단하죠? 알면 간단 합니다. ^^
[실행 결과]
실행결과 화면을 보면 잘 정렬되었죠!
정렬을 별로 쓸일이 없지만 정말 아주아주 가끔 필요 할때 활용하세요.
감사합니다.