티스토리 뷰

import java.util.ArrayList; // ArrayList 타입을 사용하기 위한 import
import java.util.Collections; // Collections 객체를 사용하기 위한 import
import java.util.Comparator; // Comparator를 사용한기 위한 import

public class Employee
{

/*
Employee 객체의 생성자 함수
수개의 String을 입력받아 name과 nickname에 값을 넣어준다
*/

 public Employee(String n, String m){
  this.name= n;
  this.nickName = m;
 }

// getName 메소드
 public String getName(){
  return name;
 }

// getNickName 메소드
 public String getNickName(){
  return nickName;
 }

 private String name;
 private String nickName;
}

class SortingTest
{
 public static void main(String[] args){
/* ArrayList타입의 Employee를 생성시키며 인스턴스 이름은 list로 선언한다 */
  ArrayList<Employee> list = new ArrayList<Employee>();

/* 생성된 list에 데이터를 입력한다. 입력된 데이터는 Employee 타입으로 name과 nickname으로 각기 입력된다. */

  list.add(new Employee("김승권", "제임스딘"));
  list.add(new Employee("홍승우", "얜잠만자"));
  list.add(new Employee("김희경", "울반홍일점"));
  list.add(new Employee("신용일", "아졸려라"));

/* name을 비교하기위한 nameComp 인스턴스 생성 */
  EmpNameCompare nameComp = new EmpNameCompare();

/* nickname을 비교하기 위한 nickComp 인스턴스 생성 */
  EmpNickCompare nickComp = new EmpNickCompare();

  Collections.sort(list, nameComp);
// Collections 객체는 Collection 타입의 객체를 핸들링하는 개체이다.
sort는 기본적으로 두가지 기능을 갖추고 있는데 Collection타입의 인스턴스를 가질 때와 Collection 타입의 인스턴스와 compare 기능을 소유한 인스턴스를 가질 때이다.
sort(Collection 타입의 인스턴스) 일때에는 그 인스턴스의 내부 compare를 사용하고, sort(collection 타입의 인스턴스, compare 인스턴스) 일 때에서는 compare타입의 인스턴스 내부 타입을 사용하여 비교하여 소트한다.
객체는 자동으로 compare 인스턴스를 호출하고 내부적으로 sort하게 된다. 외형적으로 변하는 것은 아무것도 없다.


  for(Employee e : list){
   System.out.println("데스노트  1 : " + e.getName() + "\t\t" + e.getNickName());
  }

  System.out.println("-------------------------------");

  Collections.sort(list, nickComp);
  for(Employee e : list){
   System.out.println("데스노트  2: " + e.getNickName() + "\t\t" + e.getName());
  }
 }
}

class EmpNameCompare implements Comparator<Employee>
{
 public int compare(Employee e1, Employee e2){
  return e1.getName().compareTo(e2.getName());
 }
}
class EmpNickCompare implements Comparator<Employee>
{
 public int compare(Employee e1, Employee e2){
  return e1.getNickName().compareTo(e2.getNickName());
 }
}






 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함