Ketika saya mencoba:
Queue<Integer> q = new Queue<Integer>();
kompiler memberi saya kesalahan. Ada bantuan?
Juga, jika saya ingin menginisialisasi antrian, apakah saya harus mengimplementasikan metode antrian?
Ketika saya mencoba:
Queue<Integer> q = new Queue<Integer>();
kompiler memberi saya kesalahan. Ada bantuan?
Juga, jika saya ingin menginisialisasi antrian, apakah saya harus mengimplementasikan metode antrian?
Queue
adalah sebuah antarmuka. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Jawaban:
A
Queue
adalah antarmuka, yang berarti Anda tidak dapat membuat secaraQueue
langsung.Pilihan terbaik adalah untuk membangun off kelas yang sudah mengimplementasikan
Queue
interface, seperti salah satu dari berikut ini:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
, atauSynchronousQueue
.Alternatifnya adalah menulis kelas Anda sendiri yang mengimplementasikan antarmuka antrian yang diperlukan. Ini tidak diperlukan kecuali dalam kasus-kasus langka di mana Anda ingin melakukan sesuatu yang istimewa sambil memberikan sisa program Anda dengan
Queue
.Alternatif yang bahkan lebih jarang digunakan adalah membangun kelas anonim yang mengimplementasikan
Queue
. Anda mungkin tidak ingin melakukan ini, tetapi terdaftar sebagai opsi demi mencakup semua pangkalan.sumber
Queue
... tapi +1 tetap.ArrayDeque
Queue
adalah sebuah antarmuka. Anda tidak dapat membuat instance antarmuka secara langsung kecuali melalui kelas dalam anonim. Biasanya ini bukan yang ingin Anda lakukan untuk koleksi. Sebaliknya, pilih implementasi yang sudah ada. Sebagai contoh:atau
Biasanya Anda memilih implementasi pengumpulan berdasarkan karakteristik kinerja dan konkurensi yang Anda minati.
sumber
Karena
Queue
antarmuka, Anda tidak dapat membuat instance seperti yang Anda ilustrasikansumber
java.util.Queue
adalah sebuah antarmuka. Anda tidak dapat membuat instance antarmuka. Anda perlu membuat instance kelas yang mengimplementasikan antarmuka itu. Dalam hal ini LinkedList adalah kelas semacam itu.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
Antrian adalah antarmuka; Anda tidak dapat membuat Antrian secara eksplisit. Anda harus meng-instantiate salah satu kelas implementasinya. Sesuatu seperti:
Berikut ini tautan ke tutorial Java tentang hal ini.
sumber
Antarmuka antrian meluas java.util.Collection dengan operasi penyisipan, ekstraksi, dan inspeksi tambahan seperti:
+offer(element: E):
boolean // Memasukkan elemen+poll(): E
// Ambil elemen dan mengembalikan NULL jika antrian kosong+remove(): E
// Mengambil dan menghapus elemen dan melemparkan Pengecualian jika antrian kosong+peek(): E
// Ambil, tetapi tidak menghapus, kepala antrian ini, mengembalikan nol jika antrian ini kosong.+element(): E
// Ambil, tetapi tidak menghapus, kepala antrian ini, melempar pengecualian jika antrian kosong.Contoh Kode untuk mengimplementasikan Antrian:
Keluaran kode:
sumber
Antrian adalah antarmuka di java, Anda tidak bisa melakukan itu.
Sebaliknya, Anda memiliki dua opsi:
Pilihan 1:
pilihan 2:
Saya sarankan menggunakan option2 karena sedikit lebih cepat daripada yang lain
sumber
Antrian di Jawa didefinisikan sebagai antarmuka dan banyak implementasi siap pakai hadir sebagai bagian dari rilis JDK. Berikut adalah beberapa: LinkedList , Antrian Prioritas, ArrayBlockingQueue, ConcurrentLinkedQueue, Antrian Transfer Tertaut, Antrian Sinkron dll.
SO Anda dapat membuat kelas-kelas ini dan menyimpannya sebagai referensi Antrian. sebagai contoh
Anda juga dapat mengimplementasikan antarmuka Antrian khusus yang mengimplementasikan Antrian.
sumber
Queue
adalah antarmuka di java, Anda tidak bisa melakukan itu. mencoba:sumber