JAVA/코드

2022_10_26 연습 03 day03_10_26.src.com.ssc.queue

0304호 2022. 10. 27. 18:30
package day03_10_26.src.com.ssc.queue;

import java.util.Comparator;
import java.util.Date;
import java.util.PriorityQueue;
import day03_10_26.src.com.ssc.stack.PersonVO;

public class Main {
	
	public static void main(String[] args) {
		//PriorityQueue는 데이터를 정렬된 순서대로 꺼낼 수 있도록 해주는 클래스
		
		//정수를 저장하는 PriorityQueue를 만들어서 출력
		PriorityQueue<Integer> intQueue = 
				new PriorityQueue<>();
		
		//데이터 저장
		intQueue.offer(100);
		intQueue.offer(70);
		intQueue.offer(90);
	
		//데이터 출력
		System.out.println(intQueue.poll());
		System.out.println(intQueue.poll());
		System.out.println(intQueue.poll());
		System.out.println(intQueue.poll());
			
		//PersonVO클래스를 저장하는 우선순위큐
		//이상태에서 만들면 PErsonVO의 크기 비교를 할 수 없기 때문에 예외발생
		//PriorityQueue<PersonVO> persons = new PriorityQueue<>();
		//PersonVO클래스에 Comparable 인터페이스를 implements하고 
		//compareTo라는 메서드를 재정의 해서 해결할 수 있고
		
		//Comparator인터페이스를 대입받을 수 있는 경우에는 comparator인터페이스를
		//구현한 클래스의 인스턴스를 이용해서 생성해도 된다. (이 방법을 권장한다)
		PriorityQueue<PersonVO> persons = 
				new PriorityQueue<>(new Comparator<PersonVO>() {

					@Override
					public int compare(PersonVO o1, PersonVO o2) {
						return o2.getBirthday().compareTo(o1.getBirthday());
					}
					
				});
		
		persons.offer(new PersonVO(
				1, "아담", new Date(100,9,10), "01041111569"));
		persons.offer(new PersonVO(
				2, "자담", new Date(106,8,10), "01041111569"));
		persons.offer(new PersonVO(
				3, "차담", new Date(103,7,10), "01041111569"));
		
		System.out.println(persons.poll());		
		System.out.println(persons.poll());		
		System.out.println(persons.poll());		
	}

}