English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste exemplo, vamos aprender a implementar a estrutura de dados fila em Java.
Para entender este exemplo, certifique-se de que você primeiro acesse o seguinte tutorial,
public class Queue { int SIZE = 5; int items[] = new int[SIZE]; int front, rear; Queue() { front = -1; rear = -1; } //verificar se a fila está cheia boolean isFull() { if (front == 0 && rear == SIZE - 1) { return true; } return false; } //verificar se a fila está vazia boolean isEmpty() { if (front == -1) return true; else return false; } //Inserir elemento na fila void enQueue(int element) { //se a fila já estiver cheia if (isFull()) { System.out.println("A fila está cheia"); } else { if (front == -1) { //marcar front como o primeiro elemento da fila front = 0; } rear++; //inserir elemento no final items[rear] = element; System.out.println("Inserir " + element); } } //excluir elemento da fila int deQueue() { int element; //se a fila estiver vazia if (isEmpty()) { System.out.println("A fila está vazia"); return (-1); } else { //Remover elemento da frente da fila element = items[front]; //se a fila tiver apenas um elemento if (front >= rear) { front = -1; rear = -1; } else { //marcar o próximo elemento como front front++; } System.out.println(element + "Excluído"); return (element); } } //exibir elementos da fila void display() { int i; if (isEmpty()) { System.out.println("Cadeia vazia"); } else { //Mostrar o índice frontal System.out.println("\nÍndice frontal-> " + front); //Mostrar os elementos da fila System.out.println("Itens -> "); for (i = front; i <= rear; i++) System.out.print(items[i] + " "); // Mostrar o índice traseiro da fila System.out.println("\nÍndice traseiro-> " + rear); } } public static void main(String[] args) { //Criar um objeto da classe Queue Queue q = new Queue(); //Tente remover um elemento da fila // A fila atual está vazia // Portanto, não pode ser removido q.deQueue(); // Inserir elemento na fila for(int i = 1; i < 6; i ++) { q.enQueue(i); } // Não foi possível inserir o6elementos adicionados à fila, pois a fila está cheia q.enQueue(6); q.display(); // deQueue remove o primeiro elemento inserido, por exemplo:1 q.deQueue(); //Agora temos apenas4elementos q.display(); } }
Resultados de saída
A fila está vazia Inserir 1 Inserir 2 Inserir 3 Inserir 4 Inserir 5 A fila está cheia Índice frontal-> 0 Itens -> 1 2 3 4 5 Índice traseiro-> 4 1 Removido Índice frontal-> 1 Itens -> 2 3 4 5 Índice traseiro-> 4
No exemplo acima, já implementamos a estrutura de dados de fila em Java.
Java oferece uma interface interna para implementar filas, Queue.
import java.util.Queue; import java.util.LinkedList; class Main { public static void main(String[] args) { //Criar uma fila usando a classe LinkedList Queue<Integer> numbers = new LinkedList<>(); // enqueue //Inserir elemento no final da fila numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Fila: " + numbers); // dequeue //Remover elemento da frente da fila int removedNumber = numbers.poll(); System.out.println("Elemento removido: " + removedNumber); System.out.println("Fila após exclusão: ") + numbers); } }
Resultados de saída
Fila: [1, 2, 3] Elemento excluído: 1 Fila após exclusão: [2, 3]
No exemplo acima, usamos a interface Java Queue para implementar a fila. Aqui, usamos a classe LinkedList para implementar a interface Queue.
Numbers.offer() - Inserir um elemento no final da fila
Numbers.poll() - Remover um elemento do início da fila
Atenção, usamos colchetes de ponta <Integer> ao criar a fila. Isso indica que a fila é um tipo genérico. Para obter mais informações sobre generics, acesseGenerics Java.
Também podemos usar outras interfaces e classes para substituir Queue e LinkedList. Por exemplo,