Mga array sa kursong CodeGym Sa CodeGym, magsisimula kang magtrabaho sa mga array sa Level 7 ng Java Syntax quest. Tatlong aralin ang nakatuon sa kanila, pati na rin ang 8 mga gawain sa iba't ibang antas upang pagsamahin ang iyong mga kasanayan sa pagtatrabaho sa mga array. Ngunit makakatagpo ka ng mga array nang maraming beses sa panahon ng kurso (sa partikular, ang klase ng Array ay pag-aaralan sa Java Collections quest at bilang bahagi ng iyong trabaho sa hinaharap. |
Ano ang array?
Ang array ay isang istraktura ng data na nag-iimbak ng mga elemento ng parehong uri. Maaari mong isipin ito bilang isang hanay ng mga may bilang na mga cell. Maaari kang maglagay ng ilang data sa bawat cell (isang elemento ng data bawat cell). Ang isang partikular na cell ay ina-access gamit ang numero nito. Ang numero ng elemento sa array ay tinatawag ding index . Sa Java, ang isang array ay homogenous, ibig sabihin, lahat ng mga cell nito ay naglalaman ng mga elemento ng parehong uri. Kaya, ang hanay ng mga integer ay naglalaman lamang ng mga integer ( int ), isang hanay ng mga string — mga string lamang, at isang hanay ng mga pagkakataon ng klase ng Aso na nilikha namin ay maglalaman lamang ng mga bagay na Aso . Sa madaling salita, hindi tayo papayagan ng Java na maglagay ng integer sa unang cell ng array, String sa pangalawa, at Aso sa pangatlo.
Pagdedeklara ng array
Paano mo idedeklara ang isang array?
Tulad ng anumang variable, ang isang array ay dapat ideklara sa Java. Magagawa ito sa isa sa dalawang paraan. Ang mga ito ay katumbas, ngunit ang unang paraan ay mas pare-pareho sa estilo ng Java. Ang pangalawa ay isang legacy ng wikang C: maraming C programmer ang lumipat sa Java, at isang alternatibong paraan ang itinago para sa kanilang kaginhawahan. Ipinapakita ng talahanayan ang parehong paraan ng pagdedeklara ng array sa Java:Hindi. | Pagdedeklara ng array, Java syntax | Mga halimbawa | Magkomento |
---|---|---|---|
1. |
dataType[] arrayName; |
|
Maipapayo na magdeklara ng array sa ganitong paraan. Java style ito. |
2. |
dataType arrayName[]; |
|
Ang paraan ng deklarasyon ng array na minana mula sa C/C++, ay gumagana sa Java |
Paglikha ng array
Paano ka gumawa ng array?
Tulad ng anumang iba pang bagay, maaari kang lumikha ng isang Java array, ibig sabihin, magreserba ng isang lugar sa memorya para dito, gamit ang bagong operator. Ito ay kung paano ito ginawa:
new typeOfArray[length];
kung saan ang typeOfArray ay ang uri ng array at ang haba ay ang haba nito (ibig sabihin, ang bilang ng mga cell) na ipinahayag bilang isang buong numero ( int
). Ngunit tandaan na dito lamang kami naglaan ng memorya para sa array - hindi namin naiugnay ang ipinahayag na array sa anumang naunang ipinahayag na variable. Karaniwan, ang isang array ay unang ipinahayag at pagkatapos ay na-instantiate, halimbawa:
int[] myArray; // Array declaration
myArray = new int[10]; // Create (allocate memory for) an array of 10 ints
Dito lumikha kami ng isang hanay ng mga integer na tinatawag na myArray , na nagpapaalam sa compiler na ito ay binubuo ng 10 mga cell (bawat isa ay naglalaman ng isang integer). Gayunpaman, mas karaniwan na gamitin ang sumusunod na pinaikling syntax upang lumikha kaagad ng array kapag ito ay idineklara:
int[] myArray = new int [10]; // Declare the array and allocate memory "in one blow"
Paalala:Pagkatapos gumawa ng array gamit ang bagong operator, naglalaman ang mga cell nito ng mga default na value. Para sa mga uri ng numero (tulad ng sa aming halimbawa), ang default na halaga ay 0, para sa uri ng boolean , ito ay false , at para sa mga uri ng sanggunian, ito ay null . Kaya, pagkatapos isagawa ang pahayag na ito
int[] myArray = new int[10];
nakakakuha kami ng isang hanay ng sampung integer at, hanggang sa gumawa ang programa ng isang bagay upang baguhin ang mga halaga, ang bawat cell ay naglalaman ng 0.
Makakahanap ka ng higit pang impormasyon tungkol sa mga array sa artikulong " Something about arrays " |
Haba ng array sa Java
Tulad ng sinabi namin sa itaas, ang haba ng isang array ay ang bilang ng mga elemento na idinisenyo upang hawakan ng array. Ang haba ng isang array ay hindi na mababago pagkatapos itong malikha. Paalalana ang mga elemento ng array ay binibilang simula sa zero sa Java. Kaya, kung mayroon tayong hanay ng 10 elemento, kung gayon ang index ng unang elemento ay 0 at ang index ng huli ay 9.
int[] myArray = new int[10]; // Create an int array for 10 elements and name it myArray
System.out.println(myArray.length); // Display the array's length, i.e. the number of elements we can put into the array
Output:
10
Pagsisimula ng array at pag-access sa mga elemento nito
Ngayon alam na natin kung paano gumawa ng array sa Java. Ang proseso ay hindi nagbibigay sa amin ng isang walang laman na array, ngunit isang array na puno ng mga default na halaga. Halimbawa, para sa isang int array, ito ay 0, at kung mayroon kaming array ng anumang uri ng reference, ang default sa bawat cell ay null . Ina-access namin ang isang elemento ng array (halimbawa, upang itakda ang halaga nito, ipakita ito sa screen, o magsagawa ng ilang operasyon kasama nito) sa pamamagitan ng index nito. Ang pagsisimula ng array ay ang proseso ng pagpuno sa isang array ng mga partikular na halaga (maliban sa default). Halimbawa: gumawa tayo ng string array para sa 4 na season at punan ito ng mga pangalan ng season.
String[] seasons = new String[4]; /* Declare and create an array. Java allocates memory for an array of 4 strings, and each cell is set to null (since String is a reference type) */
seasons[0] = "Winter"; /* We set the first cell, i.e. the cell with index zero, to "Winter". Here we access the zeroth element of the array and write a specific value to it. */
seasons[1] = "Spring"; // We follow a similar procedure for the cell with index 1 (the second cell)
seasons[2] = "Summer"; // ... index 2
seasons[3] = "Autumn"; // and finally, index 3
Ngayon ang mga pangalan ng mga panahon ay nakasulat sa apat na mga cell ng aming array. Maaari naming simulan ang array sa ibang paraan, pagsasama-sama ng deklarasyon at pagsisimula:
String[] seasons = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Higit pa rito, maaaring alisin ang bagong operator:
String[] seasons = {"Winter", "Spring", "Summer", "Autumn"};
Paano mo ipapakita ang isang array sa screen sa Java?
Maaari kang magpakita ng mga elemento ng array sa screen (ibig sabihin, sa console) gamit ang for loop. Ang isa pang mas maikling paraan upang magpakita ng array ay tatalakayin sa talata na pinamagatang " Mga kapaki-pakinabang na pamamaraan para sa pagtatrabaho sa mga arrays ". Pansamantala, tingnan ang halimbawang ito kung saan ipinapakita ang isang array gamit ang isang loop:
String[] seasons = new String {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Ipapakita ng programa ang sumusunod:
Winter
Spring
Summer
Autumn
One-dimensional at multidimensional arrays sa Java
Ngunit paano kung gusto nating lumikha ng hindi isang hanay ng mga numero, string, o iba pang mga bagay, ngunit sa halip ay isang hanay ng mga array? Hinahayaan ka ng Java na gawin ito. Ang uri ng array na pamilyar na sa atin ( int[] myArray = new int[8] ) ay kilala bilang one-dimensional array. Ngunit ang isang array ng mga array ay tinatawag na isang two-dimensional array. Parang table na may row number at column number. O, kung natutunan mo ang mga pangunahing kaalaman sa linear algebra, maaari mong isipin ito bilang isang matrix.
Int[][] myTwoDimentionalArray = new int[8][8];
Ang array na ito ay may eksaktong 64 na elemento: myTwoDimentionalArray[0][0] , myTwoDimentionalArray[0][1] , myTwoDimentionalArray[1][0] , myTwoDimentionalArray[1][1] at iba pa hanggang myTwoDimentionalArray[7][7] . Kaya kung gagamitin natin ito upang kumatawan sa isang chessboard, ang A1 ay tumutugma sa myTwoDimentionalArray[0][0] at E2 ay tumutugma sa myTwoDimentionalArray[4][1] . Ngunit hanggang saan natin ito maitutulak? Sa Java, maaari mong tukuyin ang isang array ng mga arrays... isang array ng mga arrays ng mga arrays, at iba pa. Siyempre, ang mga three-dimensional at higher-dimensional na array ay bihirang ginagamit. Iyon ay sinabi, maaari kang gumamit ng isang three-dimensional array upang mag-program ng isang Rubik's cube, halimbawa.
Mga kapaki-pakinabang na pamamaraan para sa pagtatrabaho sa mga array
Ang Java ay may java.util.Arrays na klase para sa pagtatrabaho sa mga array. Sa pangkalahatan, ang pinakakaraniwang mga operasyon na ginagawa sa mga array ay ang pagsisimula (pagpuno ng mga elemento), pagkuha ng isang elemento (sa pamamagitan ng index), pag-uuri, at paghahanap. Ang paghahanap at pag-uuri ng mga array ay mga paksa para sa isa pang araw. Sa isang banda, magandang kasanayan na ikaw mismo ang magsulat ng ilang algorithm sa paghahanap at pag-uuri. Sa kabilang banda, ang lahat ng pinakamahusay na mga algorithm ay naipatupad na at kasama sa karaniwang mga library ng Java, at maaari mong legal na gamitin ang mga ito. Narito ang tatlong kapaki-pakinabang na pamamaraan sa klase na ito.Pag-uuri ng array
Ang paraan ng void sort(int[] myArray, int fromIndex, int toIndex) ay nag-uuri ng integer array o subarray sa pataas na pagkakasunod-sunod.Naghahanap ng isang elemento sa isang array
int binarySearch(int[] myArray, int fromIndex, int toIndex, int key) . Hinahanap ng pamamaraang ito ang pangunahing elemento sa isang pinagsunod-sunod na myArray array o subarray, mula fromIndex hanggang toIndex . Kung natagpuan ang item, ibabalik nito ang index nito. Kung hindi, ito ay nagbabalik (-fromIndex)-1 .Pag-convert ng array sa isang string
Ang String toString(int[] myArray) na paraan ay nagko-convert ng array sa isang string. Sa Java, ang mga array ay hindi nag-o-override toString() . Nangangahulugan ito na kung susubukan mong ipakita ang isang buong array nang sabay-sabay (System.out.println(myArray)) sa halip na isang elemento sa isang pagkakataon tulad ng sa talata na pinamagatang " Magpakita ng array sa screen ", makakakuha ka ng pangalan ng klase at ang hexadecimal hash ng array (tinukoy ng Object.toString() ). Kung baguhan ka, maaaring hindi mo maintindihan ang paliwanag tungkol sa paraan ng toString . Sa una, hindi mo na kailangan, ngunit ang paggamit ng paraang ito ay nagpapadali sa pagpapakita ng isang array. Hinahayaan ka ng Java na madaling magpakita ng array nang hindi gumagamit ng loop. Ang halimbawa sa ibaba ay nagpapakita nito.Isang halimbawa gamit ang sort, binarySearch, at toString
Gumawa tayo ng hanay ng mga integer, ipakita ito gamit ang toString , pag-uri-uriin ito gamit ang paraan ng pag-uuri , at pagkatapos ay maghanap ng ilang numero dito.
class Main {
public static void main(String[] args) {
int[] array = {1, 5, 4, 3, 7}; // Declare and initialize the array
System.out.println(array); // Try to display our array without using the toString method — the result is a hexadecimal number
System.out.println(Arrays.toString(array)); // Display the array correctly
Arrays.sort(array, 0, 4); // Sort the entire array from the zeroth to the fourth element
System.out.println(Arrays.toString(array)); // Display the sorted array
int key = Arrays.binarySearch(array, 5); // Look for the number 5 in the sorted array.
// The binarySearch method will return the index of the array element we are searching for
System.out.println(key); // Display the index of the number we searched for
System.out.println(Arrays.binarySearch(array, 0)); // Now try to find a number that isn't in the array,
// and immediately display the result
}
}
Output:
[I@1540e19d
[1, 5, 4, 3, 7]
[1, 3, 4, 5, 7]
3
-1
Ang unang string ay isang pagtatangka na ipakita ang array nang hindi gumagamit ng toString . Ang pangalawa ay ang array na ipinapakita gamit ang toString . Ang pangatlo ay ang pinagsunod-sunod na hanay. Ang ikaapat ay ang index ng numerong hinanap namin (5) sa pinagsunod-sunod na array (tandaan na nagbibilang kami mula sa zero, kaya ang index ng ikaapat na elemento ng array ay 3). Sa ikalimang string, makikita natin -1. Ito ay isang di-wastong array index. Ito ay nagpapahiwatig na ang numerong hinanap namin (sa kasong ito, 0) ay wala sa array.
Higit pa tungkol sa mga pamamaraan sa klase ng Array Arrays class at paggamit nito — Ang artikulong ito ay naglalarawan ng ilang pamamaraan sa Array class |
Arrays sa maikling salita
-
Mahahalagang katangian ng isang array: ang uri ng data na inilagay dito, pangalan nito, at haba nito.
Ang huling pag-aari ay tinutukoy kapag ang array ay nilikha (kapag ang memorya ay inilalaan para sa array). Ang unang dalawang katangian ay tinutukoy kapag ang array ay idineklara. -
Ang laki ng array (bilang ng mga cell) ay dapat na isang int
-
Imposibleng baguhin ang haba ng isang array pagkatapos itong malikha.
-
Maaaring ma-access ang isang elemento ng array sa pamamagitan ng index nito.
-
Ang mga elemento sa mga array, tulad ng lahat ng iba pa sa Java, ay binibilang simula sa zero.
-
Pagkatapos malikha ang isang array, ito ay puno ng mga default na halaga.
-
Ang mga array sa Java ay hindi katulad ng array sa C++. Ang mga ito ay halos tulad ng mga pointer sa mga dynamic na array.
GO TO FULL VERSION