Rangka Kerja Koleksi Java
Lama sebelum Java 2, Java menyediakan kelas ad hoc. Contohnya: Kelas Kamus, Vektor, Tindanan dan Sifat digunakan untuk menyimpan dan memanipulasi kumpulan objek.
Walaupun kelas ini sangat berguna, mereka tidak mempunyai teras, tema penyatuan. Atas sebab ini, cara anda menggunakan kelas Vektor adalah sangat berbeza daripada cara anda menggunakan kelas Properties.
Rangka kerja pengumpulan direka bentuk untuk memenuhi matlamat berikut.
Rangka kerja mestilah berprestasi. Pelaksanaan koleksi asas (tatasusunan dinamik, senarai terpaut, pepohon, jadual cincang) juga mesti cekap.
Rangka kerja ini membolehkan pelbagai jenis koleksi berfungsi dengan cara yang sama dengan tahap kesalingoperasian yang tinggi.
Sambungan dan penyesuaian kepada koleksi mestilah mudah.
Untuk tujuan ini, keseluruhan rangka kerja koleksi direka bentuk mengikut set antara muka standard. Anda boleh terus menggunakan pelaksanaan standard antara muka ini, seperti LinkedList, HashSet dan TreeSet, dsb. Selain itu, anda juga boleh melaksanakan koleksi anda sendiri melalui antara muka ini.
Rangka kerja koleksi ialah rangka kerja bersatu untuk mewakili dan memanipulasi koleksi. Semua rangka kerja koleksi mengandungi yang berikut:
Antara Muka: ialah jenis data abstrak yang mewakili koleksi. Antara muka membenarkan koleksi memanipulasi butiran perwakilannya secara bebas. Dalam bahasa berorientasikan objek, antara muka biasanya membentuk hierarki.
Pelaksanaan (kelas): ialah pelaksanaan khusus antara muka koleksi. Pada asasnya, ia adalah struktur data boleh guna semula.
Algoritma: ialah kaedah dalam objek yang melaksanakan antara muka koleksi untuk melakukan beberapa pengiraan berguna, seperti mencari dan mengisih. Algoritma ini dipanggil polimorfik kerana kaedah yang sama boleh mempunyai pelaksanaan yang berbeza pada antara muka yang serupa.
Selain koleksi, rangka kerja juga mentakrifkan beberapa antara muka dan kelas Peta. Peta menyimpan pasangan kunci/nilai. Walaupun Peta bukan koleksi, ia disepadukan sepenuhnya ke dalam koleksi.
Antara muka koleksi
Rangka kerja koleksi mentakrifkan beberapa antara muka. Bahagian ini memberikan gambaran keseluruhan setiap antara muka:
序号 | 接口描述 |
---|---|
1 | Collection 接口 允许你使用一组对象,是Collection层次结构的根接口。 |
2 | List 接口 继承于Collection和一个 List实例存储一个有序集合的元素。 |
3 | Set 继承于 Collection,是一个不包含重复元素的集合。 |
4 | SortedSet 继承于Set保存有序的集合。 |
5 | Map 将唯一的键映射到值。 |
6 | Map.Entry 描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。 |
7 | SortedMap 继承于Map,使Key保持在升序排列。 |
8 | Enumeration 这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。 |
Kelas koleksi
Java menyediakan satu set kelas koleksi standard yang melaksanakan antara muka Koleksi. Sebahagian daripada mereka adalah kelas konkrit yang boleh digunakan secara langsung, manakala yang lain adalah kelas abstrak yang menyediakan pelaksanaan separa antara muka.
Kelas koleksi standard diringkaskan dalam jadual berikut:
序号 | 类描述 |
---|---|
1 | AbstractCollection 实现了大部分的集合接口。 |
2 | AbstractList 继承于AbstractCollection 并且实现了大部分List接口。 |
3 | AbstractSequentialList 继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。 |
4 | LinkedList 继承于 AbstractSequentialList,实现了一个链表。 |
5 | ArrayList 通过继承AbstractList,实现动态数组。 |
6 | AbstractSet 继承于AbstractCollection 并且实现了大部分Set接口。 |
7 | HashSet 继承了AbstractSet,并且使用一个哈希表。 |
8 | LinkedHashSet 具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。 |
9 | TreeSet 继承于AbstractSet,使用元素的自然顺序对元素进行排序. |
10 | AbstractMap 实现了大部分的Map接口。 |
11 | HashMap HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 |
12 | TreeMap 继承了AbstractMap,并且使用一颗树。 |
13 | WeakHashMap 继承AbstractMap类,使用弱密钥的哈希表。 |
14 | LinkedHashMap 继承于HashMap,使用元素的自然顺序对元素进行排序. |
15 | IdentityHashMap 继承AbstractMap类,比较文档时使用引用相等。 |
Dalam tutorial sebelumnya, ia telah dibincangkan melalui kelas yang ditakrifkan dalam pakej java.util seperti berikut:
序号 | 类描述 |
---|---|
1 | Vector Vector类实现了一个动态数组。和ArrayList和相似,但是两者是不同的。 |
2 | Stack 栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 |
3 | Dictionary Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。 |
4 | Hashtable Hashtable是原始的java.util的一部分, 是一个Dictionary具体的实现 。 |
5 | Properties Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。 |
6 | BitSet 一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。 |
Kelas Bitset mencipta jenis tatasusunan khas untuk memegang nilai bit. Saiz tatasusunan dalam BitSet akan meningkat mengikut keperluan.
Tetapkan Algoritma
Rangka kerja pengumpulan mentakrifkan beberapa algoritma yang boleh digunakan untuk koleksi dan pemetaan. Algoritma ini ditakrifkan sebagai kaedah statik kelas pengumpulan.
Sesetengah kaedah boleh membuang ClassCastException apabila cuba membandingkan jenis yang tidak serasi. Apabila cuba mengubah suai koleksi yang tidak boleh diubah suai, UnsupportedOperationException dilemparkan.
Set mentakrifkan tiga pembolehubah statik: EMPTY_SET EMPTY_LIST, EMPTY_MAP. Tiada pembolehubah ini boleh diubah.
Nombor siri | Perihalan algoritma | ||||
---|---|---|---|---|---|
1 |
Algoritma Pengumpulan
|
Cara menggunakan iterator
Lazimnya, anda perlu mengulangi elemen dalam koleksi. Sebagai contoh, paparkan setiap elemen dalam koleksi.
Cara paling mudah untuk melakukan ini ialah menggunakan iterator, iaitu objek yang melaksanakan antara muka Iterator atau antara muka ListIterator.
Iterator membolehkan anda mendapatkan atau memadamkan elemen koleksi melalui gelung. ListIterator memanjangkan Iterator untuk membenarkan traversal dua arah senarai dan pengubahsuaian elemen.
Semua kaedah yang disediakan oleh antara muka Iterator dan listIterator disenaraikan di sini melalui contoh. <table class="reference>Nombor siri | Penerangan kaedah iterator | ||||
---|---|---|---|---|---|
1 |
Menggunakan Java Iterator
|
Cara menggunakan pembanding
TreeSet dan TreeMap menyimpan elemen dalam susunan tersusun Walau bagaimanapun, ia adalah melalui pembanding untuk menentukan dengan tepat susunan isihan yang diikuti.
Antara muka ini membolehkan kami mengisih koleksi dengan cara yang berbeza.
序号 | 比较器方法描述 |
---|---|
1 |
使用 Java Comparator 这里通过实例列出Comparator接口提供的所有方法 |
Ringkasan
Rangka Kerja Koleksi Java menyediakan pengaturcara dengan struktur data dan algoritma yang telah dibungkus untuk memanipulasinya.
Koleksi ialah objek yang menyimpan rujukan kepada objek lain. Antara muka koleksi mengisytiharkan operasi yang boleh dilakukan pada setiap jenis koleksi.
Kelas dan antara muka rangka kerja koleksi berada dalam pakej java.util.