Pemprosesan koleksi


1. [Mandatori] Mengenai pemprosesan Kod cincang dan sama, ikut peraturan berikut:

1) Selagi sama dengan ditulis semula, Kod cincang mesti ditulis semula.

2) Oleh kerana Set menyimpan objek unik dan dinilai berdasarkan Kod hash dan sama, objek

yang disimpan dalam Set mesti mengatasi kedua-dua kaedah ini.

3) Jika objek tersuai digunakan sebagai kunci Peta, kod cincang dan yang sama mesti ditindih.

Contoh positif: Rentetan mengatasi Kod cincang dan menyamai kaedah, jadi kami boleh menggunakan objek Rentetan sebagai kunci dengan senang hati.


2. subList mengembalikan SubList kelas dalaman ArrayList, yang bukan ArrayList, tetapi paparan ArrayList Semua operasi pada subsenarai Sublist akhirnya akan ditunjukkan pada senarai asal. .

4 [Wajib] Untuk menggunakan kaedah menukar set kepada tatasusunan, anda mesti menggunakan tatasusunan toArray(T[]) Input ialah tatasusunan yang betul-betul jenisnya, dan saiznya ialah saiz().


Counter Contoh:

Terdapat masalah dengan secara langsung menggunakan kaedah parameter Toarray. .

Contoh positif:

List<String> list = new ArrayList<String>(2);
list.add("guan");
list.add("bao");
String[] array = new String[list.size()];
array = list.toArray(array);

Penjelasan: Gunakan kaedah toArray dengan parameter Apabila ruang tatasusunan yang diperuntukkan oleh parameter input tidak cukup besar, kaedah toArray akan mengagihkan semula secara dalaman dan mengembalikan ruang memori baharu. alamat; jika elemen tatasusunan Jika ia lebih besar daripada yang sebenarnya diperlukan, elemen tatasusunan

dengan subskrip [ list . size() ] akan ditetapkan kepada null, dan elemen tatasusunan lain akan mengekalkan nilai asalnya adalah yang terbaik untuk menentukan saiz kumpulan parameter dan bilangan elemen koleksi dalam kaedah yang konsisten.

5 [Mandatori] Apabila menggunakan Array kelas alat asList() untuk menukar tatasusunan kepada koleksi, anda tidak boleh menggunakan kaedahnya untuk mengubah suai kaedah tambah/buang/kosongkannya. .

Nota: Objek pulangan asList ialah kelas dalaman Arrays dan tidak melaksanakan kaedah pengubahsuaian koleksi. Tatasusunan. asList merangkumi mod penyesuai, yang hanya menukar antara muka dan data latar belakang masih merupakan tatasusunan.

String[] str = new String[] { "a", "b" };
List list = Arrays.asList(str);

Kes pertama: list.add("c");

Kes kedua: str[0]= "gujin"; maka list.get(0) juga akan diubah suai dengan sewajarnya.


6 [Mandatori] Gunakan aksara kad bebas generik >

Nota: Selepas mengemas epal, objek <? extends >


7 [Mandatori] Jangan lakukan operasi alih keluar / tambah pada elemen dalam gelung foreach. Sila gunakan kaedah Iterator

untuk mengalih keluar elemen Jika anda beroperasi secara serentak, anda perlu mengunci objek Iterator. . .

Penjelasan:

1) Refleksitiviti: Hasil perbandingan x dan y adalah bertentangan dengan hasil perbandingan y dan x.

2) Transitiviti: x > 3) Simetri: x = y, maka hasil perbandingan x dan z adalah sama dengan hasil perbandingan y dan z.

Contoh balas: Contoh berikut tidak mengendalikan situasi kesamarataan, dan pengecualian mungkin berlaku dalam penggunaan sebenar:

List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
if("1".equals(temp)){
a.remove(temp);
}
}

9 [Cadangan] Apabila memulakan koleksi, cuba nyatakan saiz nilai awal koleksi.

Nota:

Cuba gunakan ArrayList(int initialCapacity) untuk memulakan ArrayList.

10 [Disyorkan] Gunakan entrySet untuk melintasi KV koleksi kelas Peta dan bukannya keySet.

Penjelasan:

keySet sebenarnya dilalui dua kali, satu adalah untuk menukarnya kepada objek Iterator dan satu lagi adalah untuk mengeluarkan nilai yang sepadan dengan kunci

daripada hashMap. EntrySet hanya melintasi sekali dan meletakkan kedua-dua kunci dan nilai ke dalam entri, yang lebih cekap. Dalam kes JDK 8, gunakan Map untuk setiap kaedah.

Contoh positif: values() mengembalikan set nilai V, iaitu objek koleksi senarai keySet() mengembalikan set nilai K, iaitu objek koleksi Set() mengembalikan gabungan nilai K - V. . HashMap, ramai orang berpendapat bahawa ConcurrentHashMap boleh Meletakkan nilai nol Ambil perhatian bahawa pengecualian NPE akan dibuang apabila menyimpan nilai null.


12 [Rujukan] Gunakan susunan (susun) dan kestabilan (tertib) set dengan baik untuk mengelakkan akibat negatif daripada gangguan (unsort) dan

ketidakstabilan (unorder) Pengaruh set.

QQ截图20170211092116.png

Penjelasan: Kestabilan bermaksud susunan elemen dalam koleksi adalah pasti setiap kali ia dilalui. Keteraturan bermaksud keputusan traversal disusun mengikut urutan mengikut peraturan perbandingan tertentu. Contohnya: ArrayList ialah susunan / nyahsusun;


13 [Rujukan] Menggunakan ciri unik elemen Set, anda boleh menyahduplikasi set dengan cepat dan mengelak daripada menggunakan

mengandungi kaedah Senarai untuk operasi traversal, perbandingan dan penduaan.