Quando tento:
Queue<Integer> q = new Queue<Integer>();
o compilador está me dando um erro. Qualquer ajuda?
Além disso, se eu quiser inicializar uma fila, tenho que implementar os métodos da fila?
Quando tento:
Queue<Integer> q = new Queue<Integer>();
o compilador está me dando um erro. Qualquer ajuda?
Além disso, se eu quiser inicializar uma fila, tenho que implementar os métodos da fila?
Queue
é uma interface. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Respostas:
A
Queue
é uma interface, o que significa que você não pode construir umaQueue
diretamente.A melhor opção é construir fora de uma classe que já implementa a
Queue
interface, como um dos seguintes:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
, ouSynchronousQueue
.Uma alternativa é escrever sua própria classe, que implementa a interface de fila necessária. Não é necessário, exceto nos casos raros em que você deseja fazer algo especial, fornecendo ao restante do seu programa a
Queue
.Uma alternativa ainda menos usada é construir uma classe anônima que implemente
Queue
. Você provavelmente não quer fazer isso, mas está listado como uma opção para cobrir todas as bases.fonte
Queue
... mas +1 de qualquer maneira.ArrayDeque
Queue
é uma interface. Você não pode instanciar uma interface diretamente, exceto por meio de uma classe interna anônima. Normalmente, não é isso que você deseja fazer para uma coleção. Em vez disso, escolha uma implementação existente. Por exemplo:ou
Normalmente, você escolhe uma implementação de coleção pelas características de desempenho e simultaneidade em que está interessado.
fonte
Como
Queue
é uma interface, você não pode criar uma instância dela como ilustroufonte
java.util.Queue
é uma interface. Você não pode instanciar interfaces. Você precisa criar uma instância de uma classe implementando essa interface. Nesse caso, um LinkedList é uma classe.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
Fila é uma interface; você não pode construir explicitamente uma fila. Você precisará instanciar uma de suas classes de implementação. Algo como:
Aqui está um link para o tutorial Java sobre este assunto.
fonte
A interface Queue estende o java.util.Collection com operações adicionais de inserção, extração e inspeção, como:
+offer(element: E):
boolean // Inserindo um elemento+poll(): E
// Recupera o elemento e retorna NULL se a fila estiver vazia+remove(): E
// Recupera e remove o elemento e lança uma exceção se a fila estiver vazia+peek(): E
// Recupera, mas não remove, o cabeçalho desta fila, retornando nulo se esta fila estiver vazia.+element(): E
// Recupera, mas não remove, o cabeçalho desta fila, lança uma exceção se a fila estiver vazia.Código de exemplo para implementar a fila:
Saída do código:
fonte
Fila é uma interface em java, você não pode fazer isso.
Em vez disso, você tem duas opções:
Opção 1:
opção 2:
Eu recomendo usar a opção2, pois é um pouco mais rápida que a outra
fonte
A fila em Java é definida como uma interface e muitas implementações prontas para uso estão presentes como parte do release do JDK. Aqui estão alguns: LinkedList , Priority Queue, ArrayBlockingQueue, ConcurrentLinkedQueue, Fila de transferência vinculada, Fila síncrona etc.
SO Você pode criar qualquer uma dessas classes e mantê-la como referência da fila. por exemplo
Você também pode implementar sua própria interface de fila de implementação de fila personalizada.
fonte
Queue
é uma interface em java, você não poderia fazer isso. experimentar:fonte