JavaRush /Blog Jawa /Random-JV /Ngopi #176. Persamaan lan beda antarane Array lan ArrayLi...

Ngopi #176. Persamaan lan beda antarane Array lan ArrayList. Carane Nulis efektif padha () Metode

Diterbitake ing grup

Persamaan lan beda antarane Array lan ArrayList

Sumber: Sedheng Artikel iki fokus kanggo mangerteni konsep Array lan ArrayList lan bedane ing antarane. Ngopi #176.  Persamaan lan beda antarane Array lan ArrayList.  Cara nulis metode sing padha () efisien - 1

Array Jawa

Array minangka struktur data sing ngidini sampeyan nyimpen urutan nilai saka jinis sing padha. Contone, sampeyan bisa nggawe macem-macem karakter, angka, lan liya-liyane. Iki ditrapake kanggo kabeh jinis primitif lan malah obyek kaya String . Sawise array digawe, kita ora bisa ngganti ukurane. Iki minangka conto umum kanggo ngumumake variabel referensi array lan ngalokasiake array:
dataType[] arrayName = new dataType[numElements];
Yen kita nyoba nambah luwih saka ukuran array, kita entuk ArrayIndexOutOfBoundsException .

Deklarasi Array

Kanggo ngumumake array, gunakake karakter [ ] sawise jinis data. Dheweke nuduhake yen variabel kasebut minangka referensi menyang array. Variabel referensi array bisa ngrujuk marang array saka macem-macem ukuran. Tembung kunci anyar nggawe papan ing memori kanggo nyimpen larik kanthi jumlah unsur sing ditemtokake. Variabel referensi array ditugasake kanggo ngrujuk marang array sing mentas dialokasikan iki. Conto ing ngisor iki nyatakake variabel referensi array gameScores , nyedhiyakake array saka papat wilangan bulat, lan menehi gameScores kanggo ngrujuk marang array sing diparengake.
int[] gameScores = new int[4];
Elemen array diinisialisasi kanthi otomatis dadi nilai standar nalika sampeyan nggunakake tembung kunci anyar kanggo miwiti referensi array. Nilai standar kanggo unsur integer lan jinis data floating-point yaiku nol, lan nilai standar kanggo unsur Boolean palsu . Sampeyan uga bisa ngumumake variabel referensi array tanpa langsung ngalokasiake array, banjur nemtokake variabel kasebut karo array sing diparengake.
int[] gameScores;

gameScores = new int[4];

Miwiti Array kanthi Nilai Non-Default

Sampeyan bisa miwiti unsur array kanthi nilai non-standar kanthi nemtokake nilai awal ing kurung kurawal {} sing dipisahake karo koma.
int [] myArray = { 5 , 7 , 11 };
Conto ing ndhuwur nggawe array saka telung unsur integer kanthi nilai 5, 7, lan 11. Inisialisasi array iki ora mbutuhake tembung kunci anyar amarga ukuran array disetel kanthi otomatis menyang jumlah unsur ing kurung kriting. Kanggo array gedhe, initialization bisa ditindakake kanthi nemtokake array lan banjur nggunakake loop kanggo nemtokake unsur array. Unsur array bisa diakses nggunakake indeks basis nol.
Int[ ] intArray = new int [ ] {2};
intArray [0] = 1;
intArray [1] = 2;

ArrayList

ArrayList minangka dhaptar unsur saka jinis referensi sing bisa diowahi ukurane . Iku uga kelas saka paket java.util gadhahanipun Java Collection Framework. ArrayList nyedhiyakake array dinamis lan kanthi otomatis nangani ngowahi ukurane. Nalika sampeyan nambahake unsur menyang ArrayList, ukuran memori kanthi otomatis mundhak. Sampeyan bisa nggunakake ArrayList nggunakake import java.util.ArrayList; . Kita uga bisa nggawe conto ArrayList nggunakake statement ing ngisor iki:
ArrayList<Type> arrayList = new ArrayList<Type>();
ArrayList bisa tuwuh ing ukuran kanggo nampung unsur sing dibutuhake. ArrayList ora ndhukung jinis primitif kayata int , nanging jinis referensi kayata Integer . Kesalahan umum ing antarane pamula yaiku ngumumake ArrayList saka jinis primitif kayata int , kaya ing ArrayList<int> myVals . Iki nyebabake kesalahan kompilasi: "jinis sing ora dikarepke, ditemokake: int, dibutuhake: referensi". Conto: Ayo nggawe obyek ArrayList jenenge cars , sing bakal nyimpen senar:
import java.util.ArrayList;

ArrayList<String> cars = new ArrayList<String>();
Kanggo nambah unsur menyang ArrayList , gunakake metode add() . Kanggo ngakses unsur ArrayList , metode get() digunakake .
cars.add("Tesla");
cars.add("BMW");
cars.add("Kia");
cars.get(0);
Bentenipun antarane array sing dibangun lan ArrayList ing Jawa yaiku yen ing kasus sing sepisanan, ukuran array ora bisa diganti (yen sampeyan pengin nambah utawa mbusak unsur menyang / saka array, sampeyan kudu nggawe sing anyar. ). Dene ing ArrayList , unsur bisa ditambah lan dibusak sawayah-wayah.

Persamaan Antarane Array lan ArrayList

  • Array lan ArrayList digunakake kanggo nyimpen unsur.
  • Array lan ArrayList bisa nyimpen nilai null.
  • Loro-lorone proses dumadi ing wektu sing tetep.
  • Dheweke bisa uga duwe nilai duplikat.
  • Array lan ArrayList ora njamin anane unsur sing diurutake.

Bentenane Utama Antarane Array lan ArrayList

Bentenane utama antarane array ( Array ) lan ArrayList yaiku sifat statis saka array lan sifat dinamis saka ArrayList . Sawise digawe, sampeyan ora bisa ngganti ukuran array, dene ArrayList bisa ngganti ukurane yen perlu. Bentenane penting liyane yaiku array minangka fungsi dhasar sing diwenehake dening Jawa. Ing sisih liya, ArrayList minangka bagean saka kerangka koleksi ing Jawa. Kita bisa ngakses unsur-unsur array nggunakake krenjang kothak ing ngendi kita bisa nemtokake indeks. Nalika ana sawetara cara kanggo ngakses unsur ArrayList lan ngganti. Sanadyan beda-beda, loro-lorone padha bisa dibandhingake ing babagan liyane. Loro-lorone struktur data ing Jawa iki adhedhasar indeks lan ngidini sampeyan nyimpen obyek. Kajaba iku, padha ngidini nilai null lan duplikat. Yen sampeyan ngerti ukuran obyek sadurunge, luwih becik nggunakake array. Nanging yen sampeyan ora yakin babagan ukuran, sampeyan kudu nggunakake ArrayList tinimbang .

Carane Nulis efektif padha () Metode

Sumber: Sedheng Kiriman iki bakal mbantu sampeyan luwih ngerti panggunaan metode sing padha () nalika nggarap kode Jawa. Yen kita pirembagan bab standar padha () cara lan tanpa implementasine, iku ing akeh cara padha karo == operasi . Sing, cara iki mbandhingaké obyek. Contone, padha () mbandhingaké loro strings lan bali bener yen strings padha lan palsu yen padha ora. Elinga yen operator == ora dianjurake kanggo mbandhingake obyek ing Jawa. Alesane yaiku nalika mbandhingake obyek, == mung bakal bali bener yen referensi tumuju obyek sing padha. Cara paling gampang kanggo ngindhari masalah yaiku ora ngilangi metode sing padha , saengga saben conto kelas mung padha karo awake dhewe. Sampeyan mung kudu override witjaksono nalika kelas duwe konsep podo logis sing beda saka identitas prasaja obyek, lan superclass durung overridden podo. Mangkono, nalika nggunakake padha () cara , sampeyan kudu mangerteni apa referensi obyek padha logis lan apa padha deleng obyek padha.

Properties saka cara padha

Saben metode sing padha nindakake relasi ekuivalensi . Nduweni sifat ing ngisor iki:
  • Reflektif : Kanggo sembarang nilai referensi non-null x, x.equals (x) kudu bali bener .

  • Simetris : Kanggo sembarang nilai referensi non-nullx lan y , x.equals(y) kudu bali bener mung yen y.equals(x) bali bener .

  • Transitif : Kanggo sembarang nilai referensi non-null x , y , z , yen x.equals(y) bali bener lan y.equals(z) bali bener , banjur x.equals(z) uga kudu bali bener .

  • Konsisten : Kanggo sembarang nilai referensi non-null x lan y, sawetara panggilan kanggo x.equals(y) kudu konsisten bali bener utawa konsisten bali palsu .

  • Non-nullity : Kanggo sembarang non-null nilai referensi x, x.equals (null) kudu bali palsu .

Ayo goleki kanthi luwih rinci babagan saben properti:

Refleksivitas:

Objek kudu padha karo awake dhewe. Kanggo verifikasi iki, tambahake conto kelas sampeyan menyang koleksi. Cara ngemot bisa uga nuduhake manawa koleksi kasebut ora ngemot conto sing wis ditambahake.

Simetri:

Loro obyek (bisa uga saka kelas sing beda) kudu padha karo siji liyane.

Sabanjure:

Aja nulis cara sing padha gumantung saka sumber daya sing ora bisa dipercaya / molah malih.

Non-nol:

Tansah ngasilake bener yen obyek liwati padha karo null .

Ayo ngringkes:

Mangkene resep kanggo metode kualitas sing padha :
  1. Gunakake operator == kanggo nyoba apa argumen minangka referensi kanggo obyek iki.

  2. Gunakake operator instanceof kanggo mriksa apa argumen saka jinis sing bener.

  3. Kirimake argumen menyang jinis sing bener.

  4. Kanggo saben kolom "penting" ing kelas, priksa manawa kolom argumen kasebut cocog karo lapangan sing cocog karo obyek kasebut:

    • Kanggo kothak primitif: kang jinis ora float utawa pindho , nggunakake == operator kanggo mbandhingaké.
    • Kanggo kolom referensi obyek: nelpon cara padha rekursif; kanggo kolom floating point nggunakake metode statis Float.compare(float, float); lan kanggo lapangan pindho nggunakake Double.compare(dobel, pindho) .
    • Kanggo kolom array: Gunakake pedoman iki kanggo saben unsur. Yen saben unsur ing kolom Uploaded pinunjul, nggunakake salah siji saka Arrays.equals () cara .
    • Sawetara kolom referensi obyek bisa ngemot nilai null . Supaya ora mbuwang NullPointerException , priksa lapangan kasebut kanggo kesetaraan nggunakake metode statis Objects.equals(Object, Object) .
  5. Yen wis rampung nulis metode sing padha , takon dhewe telung pitakonan: Apa simetris? Apa iku transitif? Apa dheweke konsisten?

Lan elinga, tansah ganti hashCode nalika nimpa padha karo .
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION