저번시간에 문자열 정렬을 해봤습니다.

이번시간에는 숫자 정렬 하는것을 해보겠습니다. 

문자열 정렬 내용: 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:크다


간단하죠?  알면 간단 합니다. ^^



[실행 결과]

sortNumber.png


실행결과 화면을 보면 잘 정렬되었죠!

정렬을 별로 쓸일이 없지만 정말 아주아주 가끔 필요 할때 활용하세요.


감사합니다.