java에서 List정렬에 대해 알아보도록 하겠습니다.

Collections.sort를 사용하면 쉽게 정렬할수 있습니다.

Collections이기때문에 Collection을 implements 하는 List, Map, Vector등을 정렬할 수 있습니다.


정렬 하기 위해서는 Comparator을 implements해서 사용하면 됩니다.

예제를 보고 잘 따라해보세요.


먼저 이름, 주소, 전화번호를 갖고 있는 오브젝트를 만듭니다.

public class User {
 
	private String name;
	private String address;
	private String phone;
 
	public User() {
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the address
	 */
	public String getAddress() {
		return address;
	}
	/**
	 * @param address the address to set
	 */
	public void setAddress(String address) {
		this.address = address;
	}
	/**
	 * @return the phone
	 */
	public String getPhone() {
		return phone;
	}
	/**
	 * @param phone the phone to set
	 */
	public void setPhone(String phone) {
		this.phone = phone;
	}
 
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuilder str = new StringBuilder();
		str.append("name=").append(name).append(", ");
		str.append("address=").append(address).append(", ");
		str.append("phone=").append(phone);
 
		return str.toString();
	}
}



그다음은 메인 소스입니다.

[샘플소스]

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);
		}
	}
 
 
	/**
	 * 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");
		 users.add(user);
 
 
		 user = new User();
		 user.setName("박영희");
		 user.setAddress("부산 해운대");
		 user.setPhone("010-4234-0192");
		 users.add(user);
 
 
		 user = new User();
		 user.setName("감수왕");
		 user.setAddress("충북 제천");
		 user.setPhone("010-7234-0192");
		 users.add(user);
 
 
		 user = new User();
		 user.setName("이사람");
		 user.setAddress("강원도 영울");
		 user.setPhone("010-0234-0192");
		 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());
		}
 
	}
}



[실행 결과]

Collections.sort.png


어렵지 않죠!!

몰라서 어려운거지 알면 어렵지 않아요.(당연할 말이 겠지만....^^;)


다음시간에는 숫자 정렬을 해보겠습니다.

거의 똑같고 몇줄만 틀린데 한꺼번에 올리기엔 너무 길어 질것 같아서...^^;

그럼, 다음 시간을 기대주세요.


감사합니다.