HashMap Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Implementasi berbasis tabel hash antarmuka Map
.
[Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class HashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type HashMap = class
inherit AbstractMap
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IMap
- Warisan
- Turunan
- Atribut
- Penerapan
Keterangan
Implementasi berbasis tabel hash antarmuka Map
. Implementasi ini menyediakan semua operasi peta opsional, dan mengizinkan null
nilai dan kunci.null
(Kelas HashMap
kira-kira setara Hashtable
dengan , kecuali tidak disinkronkan dan mengizinkan null.) Kelas ini tidak menjamin urutan peta; secara khusus, tidak menjamin bahwa pesanan akan tetap konstan dari waktu ke waktu.
Implementasi ini memberikan performa waktu konstan untuk operasi dasar (get
dan put
), dengan asumsi fungsi hash menyebarkan elemen dengan benar di antara wadah. Perulangan atas tampilan koleksi membutuhkan waktu yang sebanding dengan "kapasitas" HashMap
instans (jumlah wadah) ditambah ukurannya (jumlah pemetaan nilai kunci). Dengan demikian, sangat penting untuk tidak mengatur kapasitas awal terlalu tinggi (atau faktor beban terlalu rendah) jika performa iterasi penting.
Instans HashMap
memiliki dua parameter yang memengaruhi performanya: kapasitas awal dan faktor beban. Kapasitasnya adalah jumlah wadah dalam tabel hash, dan kapasitas awal hanyalah kapasitas pada saat tabel hash dibuat. Faktor beban adalah ukuran seberapa penuh tabel hash diizinkan untuk mendapatkan sebelum kapasitasnya ditingkatkan secara otomatis. Ketika jumlah entri dalam tabel hash melebihi produk faktor beban dan kapasitas saat ini, tabel hash direhash (yaitu, struktur data internal dibangun kembali) sehingga tabel hash memiliki sekitar dua kali jumlah wadah.
Sebagai aturan umum, faktor beban default (.75) menawarkan tradeoff yang baik antara biaya waktu dan ruang. Nilai yang lebih tinggi mengurangi overhead ruang tetapi meningkatkan biaya pencarian (tercermin dalam sebagian besar operasi HashMap
kelas, termasuk get
dan put
). Jumlah entri yang diharapkan dalam peta dan faktor bebannya harus diperhitungkan saat mengatur kapasitas awalnya, sehingga dapat meminimalkan jumlah operasi pengulangan. Jika kapasitas awal lebih besar dari jumlah maksimum entri yang dibagi dengan faktor beban, tidak ada operasi pengulangan yang akan terjadi.
Jika banyak pemetaan yang akan disimpan dalam HashMap
instans, membuatnya dengan kapasitas yang cukup besar akan memungkinkan pemetaan disimpan lebih efisien daripada membiarkannya melakukan pengulangan otomatis sesuai kebutuhan untuk menumbuhkan tabel. Perhatikan bahwa menggunakan banyak kunci dengan cara yang sama hashCode()
adalah cara yang pasti untuk memperlambat performa tabel hash apa pun. Untuk mengameliorasi dampak, ketika kunci adalah Comparable
, kelas ini dapat menggunakan urutan perbandingan di antara kunci untuk membantu memutuskan ikatan.
<kuat>Perhatikan bahwa implementasi ini tidak disinkronkan.</strong> Jika beberapa utas mengakses peta hash secara bersamaan, dan setidaknya salah satu utas memodifikasi peta secara struktural, itu harus disinkronkan secara eksternal. (Modifikasi struktural adalah operasi apa pun yang menambahkan atau menghapus satu atau beberapa pemetaan; hanya mengubah nilai yang terkait dengan kunci yang sudah dikandung instans bukanlah modifikasi struktural.) Ini biasanya dicapai dengan menyinkronkan pada beberapa objek yang secara alami merangkum peta.
Jika tidak ada objek seperti itu, peta harus "dibungkus" menggunakan Collections#synchronizedMap Collections.synchronizedMap
metode . Ini paling baik dilakukan pada waktu pembuatan, untuk mencegah akses tidak disengaja yang tidak disinkronkan ke peta:
Map m = Collections.synchronizedMap(new HashMap(...));
Iterator yang dikembalikan oleh semua "metode tampilan koleksi" kelas ini gagal cepat: jika peta dimodifikasi secara struktural kapan saja setelah iterator dibuat, dengan cara apa pun kecuali melalui metode iterator sendiri remove
, iterator akan melemparkan ConcurrentModificationException
. Dengan demikian, dalam menghadapi modifikasi bersamaan, iterator gagal dengan cepat dan bersih, daripada berisiko perilaku arbitrer dan non-deterministik pada waktu yang tidak ditentukan di masa depan.
Perhatikan bahwa perilaku fail-fast dari iterator tidak dapat dijamin apa adanya, umumnya, tidak mungkin untuk membuat jaminan keras dengan adanya modifikasi bersamaan yang tidak disinkronkan. Iterator fail-fast melempar ConcurrentModificationException
berdasarkan upaya terbaik. Oleh karena itu, akan salah untuk menulis program yang bergantung pada pengecualian ini untuk kebenarannya: perilaku iterator yang gagal cepat harus digunakan hanya untuk mendeteksi bug.
Kelas ini adalah anggota Java Collections Framework.
Ditambahkan dalam 1.2.
Dokumentasi Java untuk java.util.HashMap
.
Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.
Konstruktor
HashMap() |
Membangun kosong |
HashMap(IDictionary) |
Membangun yang baru |
HashMap(Int32) |
Membangun kosong |
HashMap(Int32, Single) |
Membangun kosong |
HashMap(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
Properti
Class |
Mengembalikan kelas runtime dari . |
Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
IsEmpty |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
JniIdentityHashCode |
Implementasi berbasis tabel hash antarmuka |
JniPeerMembers |
Implementasi berbasis tabel hash antarmuka |
PeerReference |
Implementasi berbasis tabel hash antarmuka |
ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
Metode
Clear() |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
Clone() |
Mengembalikan salinan dangkal instans ini |
Compute(Object, IBiFunction) |
Implementasi berbasis tabel hash antarmuka |
ComputeIfAbsent(Object, IFunction) |
Implementasi berbasis tabel hash antarmuka |
ComputeIfPresent(Object, IBiFunction) |
Implementasi berbasis tabel hash antarmuka |
ContainsKey(Object) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
ContainsValue(Object) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
Dispose() |
Implementasi berbasis tabel hash antarmuka |
Dispose(Boolean) |
Implementasi berbasis tabel hash antarmuka |
EntrySet() |
Mengembalikan |
Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
ForEach(IBiConsumer) |
Implementasi berbasis tabel hash antarmuka |
Get(Object) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
GetOrDefault(Object, Object) |
Implementasi berbasis tabel hash antarmuka |
JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
KeySet() |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
Merge(Object, Object, IBiFunction) |
Implementasi berbasis tabel hash antarmuka |
Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
Put(Object, Object) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
PutAll(IDictionary) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
PutIfAbsent(Object, Object) |
Implementasi berbasis tabel hash antarmuka |
Remove(Object) |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
Remove(Object, Object) |
Menghapus pemetaan untuk kunci yang ditentukan dari peta ini jika ada. |
Replace(Object, Object) |
Implementasi berbasis tabel hash antarmuka |
Replace(Object, Object, Object) |
Implementasi berbasis tabel hash antarmuka |
ReplaceAll(IBiFunction) |
Implementasi berbasis tabel hash antarmuka |
SetHandle(IntPtr, JniHandleOwnership) |
Handle Mengatur properti. (Diperoleh dari Object) |
Size() |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
ToArray<T>() |
Implementasi berbasis tabel hash antarmuka |
ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
UnregisterFromRuntime() |
Implementasi berbasis tabel hash antarmuka |
Values() |
Untuk ditambahkan (Diperoleh dari AbstractMap) |
Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah real time telah berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
IJavaPeerable.Disposed() |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.DisposeUnlessReferenced() |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.Finalized() |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.JniManagedPeerState |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Implementasi berbasis tabel hash antarmuka |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Implementasi berbasis tabel hash antarmuka |
Metode Ekstensi
JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Bahasa Umum Android. |
JavaCast<TResult>(IJavaObject) |
Implementasi berbasis tabel hash antarmuka |
GetJniTypeName(IJavaPeerable) |
Implementasi berbasis tabel hash antarmuka |