Que TAD escolher para uma fila com prioridade?

Boa noite pessoal.
Eu estou a fazer um trabalho de simulação de elevadores e tenho que criar uma fila de pessoas que estão à espera do elevador mas nessa fila há pessoas com prioridade, ou seja, idosos<crianças<adultos. Eu já consegui criar a fila mas agora não sei como manter esta fila sempre com esta ordem. E houve um amigo meu que me disse que achava que havia filas com prioridade. Alguem sabe-me indicar quais?

java.util.PriorityQueue

import java.util.*;

class Pessoa {
    public int idade;
    public String nome;
    public Pessoa (String nome_, int idade_) { idade = idade_; nome = nome_; }
    public String toString() { return "[" + nome + ", " + idade + " anos]"; }
}

class TestePriorityQueue {
    public static void main(String[] args) {
        // Esta é uma fila de prioridade onde os mais idosos ficam à frente dos mais novos
        PriorityQueue<Pessoa> pq = new PriorityQueue<Pessoa> (1, new Comparator<Pessoa>() {   
            public int compare (Pessoa p1, Pessoa p2) {
                return p2.idade - p1.idade;
            }
        });
        pq.add (new Pessoa ("Matusalem", 969));
        pq.add (new Pessoa ("Noé", 950));
        pq.add (new Pessoa ("Abraão", 175));
        pq.add (new Pessoa ("Adão", 930));
        pq.add (new Pessoa ("João Batista", 33));
        pq.add (new Pessoa ("Jesus", 33));
        // Isto imprime os mais idosos antes dos mais jovens
	for (Pessoa p = pq.poll(); p != null; p = pq.poll()) {
            System.out.println (p);
        }
    }
}

P.S. Com que idade João Batista morreu mesmo? Chutei 33 mas não sou teólogo e a Wikipedia não me disse a idade exata.

Tenta a Bíblia. Dizem que é um bom livro… hehehe.