JavaRush /Блоги Java /Random-TG /Массивҳо дар Java

Массивҳо дар Java

Дар гурӯҳ нашр шудааст
Тасаввур кунед, ки ҳуҷайраҳоро дар як ҳуҷра нигоҳ доред. Ҳар як рақами худро дорад ва ҳар як намуди an objectи "Бағоҷ" -ро дар бар мегирад. Ё рӯйхати шароб, ки дар он ҳама навъҳои шароб рақамгузорӣ шудаанд ва ҳангоми фармоиш шумо танҳо рақами нӯшокиро додан лозим аст. Ё руйхати хонандагони гурухе, ки дар он студент «Андреев» дар ячейкаи якум ва «Яковлев» дар ячейкаи охирин навишта мешавад. Ё рӯйхати мусофирони ҳавопаймо, ки ба ҳар яки онҳо курсии рақами мушаххас дода шудааст. Дар Java барои кор бо сохторҳои шабеҳ, яъне миқдори зиёди додаҳои якхела массивҳо дар Java аксар вақт истифода мешаванд.

Массив чист?

Массив сохтори додаҳоест, ки унсурҳои як навъро нигоҳ медорад. Онро метавон ҳамчун маҷмӯи ячейкаҳои рақамгузоришуда баррасӣ кард, ки ҳар кадоми онҳо метавонанд дорои баъзе маълумотҳо бошанд (як элементи маълумот дар як ҳуҷайра). Дастрасӣ ба ячейкаи мушаххас тавассути рақами он сурат мегирад. Шумораи элемент дар массив инчунин индекс номида мешавад . Дар мавриди Java, массив якхела аст, яъне ҳамаи ячейкаҳои он элементҳои як навъро нигоҳ медоранд. Ҳамин тавр, массиви ададҳо танҳо ададҳои бутунро дар бар мегирад (масалан, навъи int ), массиви сатрҳо танҳо сатрҳоро дар бар мегирад, массиви элементҳои синфи Dog , ки мо офаридаем, танҳо an objectҳои Dog -ро дар бар мегирад . Яъне, дар Java мо наметавонем адади бутунро дар ячейкаи якуми массив, Сатрро дар дуюм ва "саг" дар сеюм ҷойгир кунем. Массивҳо дар Java

Эъломияи массив

Массивро чӣ гуна эълон кардан мумкин аст?

Мисли ҳама гуна тағирёбанда, массив дар Java бояд эълон карда шавад. Шумо метавонед инро бо яке аз ду роҳ анҷом диҳед. Онҳо баробаранд, аммо аввалинаш бо услуби Java мувофиқтар аст. Дуюм мероси забони Си мебошад (бисёр барномасозони Си ба Java гузаштанд ва барои роҳати онҳо усули алтернативӣ боқӣ мондааст). Ҷадвал ҳарду роҳи эълон кардани массивро дар Java нишон медиҳад:
Не. Эъломияи массив, синтаксиси Java Мисолхо Шарҳ
1.
dataType[] arrayName;
int[] myArray;

Object[]
arrayOfObjects;
Тавсия дода мешавад, ки массивро бо ин роҳ эълон кунед, ин услуби Java аст
2.
dataType arrayName[];
int myArray[];

Object
arrayOfObjects[];
Усули мероси эълон кардани массивҳо аз C/C++, ки дар Java низ кор мекунад
Дар ҳарду ҳолат, dataType навъи тағирёбандаҳо дар массив мебошад. Дар мисолҳо мо ду массив эълон кардем. Яке ададҳои бутуни навъи int , дигаре an objectҳои навъи Object ро нигоҳ медорад . Ҳамин тариқ, вақте ки массив эълон карда мешавад, он дорои ном ва намуд (навъи тағирёбандаҳои массив) мебошад. arrayName номи массив аст.

Эҷоди массив

Массивро чӣ гуна бояд сохт?

Мисли ҳама гуна an objectи дигар, шумо метавонед бо истифода аз оператори нав массиви Java эҷод кунед, яъне фазои хотираро барои он захира кунед . Ин чунин анҷом дода мешавад:
new typeOfArray [length];
Дар куҷо typeOfArray навъи массив аст ва дарозӣ дарозии он (яъне шумораи чашмакҳо) мебошад, ки бо ададҳои бутун ифода карда мешавад ( int ). Аммо, дар ин ҷо мо танҳо хотираро барои массив ҷудо кардем, аммо массивро бо ягон тағирёбандаи қаблан эълоншуда алоқаманд накардаем. Одатан массив аввал эълон карда мешавад ва баъд эҷод мешавад, масалан:
int[] myArray; // array declaration
myArray = new int[10]; // creation, that is, allocation of memory for an array of 10 elements of type int
Дар ин ҷо мо массиви ададҳои бутунро бо номи myArray эълон кардем ва баъд эълон кардем, ки он аз 10 ячейка иборат аст (ҳар кадоми онҳо адади бутунро нигоҳ медоранд). Аммо, дарҳол пас аз эъломия бо истифода аз ин синтаксиси стенография эҷод кардани массив бештар маъмул аст:
int[] myArray = new int[10]; // declaration and allocation of memory "in one bottle"
Шарҳ:Пас аз сохтани массив бо истифода аз new , чашмакҳои он бо арзишҳои пешфарз пур карда мешаванд. Барои намудҳои ададӣ (чунон ки дар мисоли мо) ин 0 хоҳад буд, барои boolean - false , барои намудҳои истинод - null . Ҳамин тариқ, пас аз амалиёт
int[] myArray = new int[10];
мо массиви дах адади бутунро мегирем ва то он даме ки ин дар давоми барнома тагйир меёбад, хар як чашмак 0 дорад.

Маълумоти бештарро дар бораи массивҳо дар мақолаи " Чизе дар бораи массивҳо " пайдо кардан мумкин аст.

Дарозии массив дар Java

Тавре ки мо дар боло гуфтем, дарозии массив шумораи элементҳое мебошад, ки массив барои онҳо тарҳрезӣ шудааст. Дарозии массивро пас аз сохтани он тағир додан мумкин нест. Шарҳ:Дар Java, элементҳои массив аз сифр сар карда рақамгузорӣ карда мешаванд. Яъне, агар мо массиви аз 10 элемент дошта бошем, он гоҳ элементи якуми массив дорои индекси 0 ва охиринаш индекси 9 мешавад. Шумо метавонед бо истифода аз тағирёбандаи lengthМассивҳо дар Java - 3 ба дарозии массив дастрас шавед . Мисол:
int[] myArray = new int[10]; // created an array of integers with 10 elements and named it myArray
System.out.println(myArray.length); // printed to the console the length of the array, that is, the number of elements that we can put in the array
Натиҷаи барнома:
10

Оғоз кардани массив ва дастрасӣ ба унсурҳои он

Чӣ тавр сохтани массив дар Java аллакай равшан аст. Пас аз ин тартиб, мо на массиви холӣ мегирем, балки массиви пур аз арзишҳои пешфарз. Масалан, дар ҳолати int , инҳо 0 хоҳанд буд ва агар мо массиви дорои маълумоти навъи истинод дошта бошем, пас ба таври нобаёнӣ дар ҳар як чашмак нул навишта мешавад . Мо ба элементи массив (яъне мо ба он арзиш менависем ё онро дар экран нишон медиҳем ё ягон амалиётро бо он иҷро мекунем) аз рӯи индексаш дастрас мешавем. Оғоз кардани массив пур кардани он бо маълумоти мушаххас аст (на ба таври нобаёнӣ). Мисол: биёед массиви 4 фаслро эҷод кунем ва онро бо арзишҳои сатр пур кунем - номҳои ин фаслҳо.
String[] seasons  = new String[4]; /* declared and created an array. Java allocated memory for an array of 4 strings, and now each cell is null (because the string is a reference type)*/

seasons[0] = "Winter"; /* in the first cell, that is, in the cell with a zero number, we wrote the string Winter. Here we get access to the zero element of the array and write a specific value there */
seasons[1] = "Spring"; // do the same procedure with cell number 1 (second)
seasons[2] = "Summer"; // ...number 2
seasons[3] = "Autumn"; // and with the last one, number 3
Ҳоло ҳамаи чор ҳуҷайраҳои массивамон номҳои фаслҳоро дар бар мегиранд. Оғозсозӣ инчунин метавонад ба таври гуногун анҷом дода шавад, ки оғозкунӣ ва эъломияро муттаҳид мекунад:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
Илова бар ин, оператори навро метавон рад кард:
String[] seasons  = {"Winter", "Spring", "Summer", "Autumn"};

Чӣ тавр массивро дар Java дар экран нишон додан мумкин аст?

Шумо метавонед унсурҳои массивро дар экран (яъне ба консол) намоиш диҳед, масалан, бо истифода аз for loop . Роҳи дигари кӯтоҳтари намоиши массив дар экран дар параграфи "Усулҳои муфид барои кор бо массивҳо" дар зер баррасӣ хоҳад шуд.. Ҳоло биёед як мисолро бо баромади даврии массив дида бароем:
String[] seasons  = new String[] {"Winter", "Spring", "Summer", "Autumn"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Дар натиҷа, барнома натиҷаи зеринро медиҳад:
Зимистон Баҳор Тобистон Тирамоҳ

Массивҳои якченака ва бисёрченакаи Java

Чӣ бояд кард, агар мо на массиви ададҳо, массиви сатрҳо ё массиви баъзе an objectҳо, балки массиви массивҳоро эҷод кунем? Java ба шумо имкон медиҳад, ки ин корро кунед. Массиви аллакай шинос int[] myArray = new int[8] массиви якченака номида мешавад. Ва массиви массивҳоро дученака меноманд. Он ба ҷадвал монанд аст, ки рақами сатр ва сутун дорад. Ё, агар шумо ибтидои алгебраи хатиро дар матритса омӯхта бошед. Массивҳо дар Java - 4Чаро чунин массивҳо лозиманд? Махсусан, барои барномарезии якхела матрицахо ва чадвалхо, инчунин an objectхое, ки аз чихати сохтор ба онхо шабохат доранд. Масалан, майдони бозӣ барои шоҳмот метавонад ҳамчун массиви 8x8 муайян карда шавад. Массиви бисёрченака ба таври зерин эълон ва эҷод карда мешавад:
int[][] myTwoDimentionalArray = new int [8][8];
Дар ин массив маҳз 64 элемент мавҷуд аст: myTwoDimentionalArray[0][0], myTwoDimentionalArray[0][1], myTwoDimentionalArray[1][0], myTwoDimentionalArray[1][1]ва ғайра то myTwoDimentionalArray[7][7]. Пас, агар мо онро барои нишон додани тахтаи шоҳмот истифода барем, он гоҳ ячейкаи A1 -ро myTwoDimentionalArray[0][0]ва E2 -ро ифода мекунад myTwoDimentionalArray[4][1]. Дар он ҷое ки ду ҳаст, се ҳаст. Дар Java шумо метавонед массиви массивҳоро муайян кунед... массиви массивҳо ва ғайра. Дуруст аст, ки массивҳои сеченака ва бештар аз он хеле кам истифода мешаванд. Аммо, бо истифода аз массиви сеченака, шумо метавонед, масалан, куби Рубикро барномарезӣ кунед.

Усулҳои муфид барои кор бо массивҳо

Барои кор бо массивҳо дар Java синфи java.util.Arrays мавҷуд аст (массивҳо дар забони англисӣ маънои “массивҳо”-ро дорад). Умуман, бештар бо массивҳо амалҳои зерин иҷро карда мешаванд: пур кардан бо элементҳо (интициализатсия), дарёфти элемент (аз рӯи рақам), ҷудокунӣ ва ҷустуҷӯ. Ҷустуҷӯ ва ҷудо кардани массивҳо мавзӯи алоҳида аст. Аз як тараф, худатон машқ кардан ва навиштани якчанд алгоритмҳои ҷустуҷӯ ва ҷудокунӣ хеле муфид аст. Аз тарафи дигар, ҳама таҷрибаҳои беҳтарин аллакай навишта шудаанд ва ба китобхонаҳои Java дохил карда шудаанд ва метавонанд қонунӣ истифода шаванд. Инҳоянд се усули муфиди ин синф

Массивро ҷудо кунед

Усул void sort(int[] myArray, int fromIndex, int toIndex)массиви ададҳо ё зермавсими онро бо тартиби афзоиш ҷудо мекунад.

Ҷустуҷӯи массив барои элементи дилхоҳ

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Ин усул унсури калидиро дар myArray ё зермавсими аллакай мураттабшуда ҷустуҷӯ мекунад , аз Index сар карда, то ба toIndex . Агар элемент ёфт шавад, усул индекси худро бармегардонад, агар не - . (-fromIndex)-1

Табдил додани массив ба сатр

Усул String toString(int[] myArray)массивро ба сатр табдил медиҳад. Гап дар он аст, ки дар массивҳои Java toString() -ро бекор намекунанд . Ин маънои онро дорад, ки агар шумо кӯшиш кунед, ки тамоми массивро (ба ҷои элемент ба унсур, ба мисли " Чашидани массив ба экран ") мустақиман ба экран ( System.out.println(myArray)), нишон диҳед, шумо номи синф ва codeи хэш-шонздаҳии массивро хоҳед гирифт. (инро Object.toString() муайян мекунад ). Агар шумо навкор бошед, шумо метавонед шарҳи усулро нафаҳмед toString. Дар марҳилаи аввал ин шарт нест, аммо бо истифода аз ин усул баромади массив содда карда мешавад. Java намоиши массивро бе истифодаи ҳалқа осон мекунад. Бештар дар бораи ин дар мисоли зер.

Намуна оид ба навъ, binarySearch ва toString

Биёед массиви ададҳоро эҷод кунем, онро бо истифода аз toString дар экран нишон диҳем , онро бо усули sort ҷудо кунем ва дар он рақамеро пайдо кунем.
class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; //declaring and initializing the array
        System.out.println(array);//trying to display our array on the screen without the toString method - we get a hexadecimal number
        System.out.println(Arrays.toString(array));//печатаем массив "правильно"
        Arrays.sort(array, 0, 4); // sort the entire array from zero to the fourth member
        System.out.println(Arrays.toString(array));//print the sorted array to the screen
        int key = Arrays.binarySearch(array, 5); // ищем key - число 5 в отсортированном массиве.
        //binarySearch method will return the index of the sorted array element, in which the required number is "hidden"
        System.out.println(key);//распечатываем индекс искомого числа
System.out.println(Arrays.binarySearch(array, 0));//а теперь попробуем найти число, которого в массиве нет,
        // and immediately display the result on the screen

    }
}
Натиҷаи барнома:
[I@1540e19d [1, 5, 4, 3, 7] [1, 3, 4, 5, 7] 3 -1
Сатри аввал кӯшиши намоиш додани массив бе toString мебошад , дуюм массивро бо истифода аз toString нишон медиҳад , сеюм массиви мураттабшуда, чорум индекси рақами дилхоҳи 5 дар массиви мураттабшуда мебошад (дар хотир доред, ки мо аз сифр, бинобар ин элементи чоруми массив дорои индекси 3). Дар сатри панҷум мо арзиши -1 -ро мебинем . Массив чунин индекс надорад. Натиҷаи баромад сигнал медиҳад, ки элементи дилхоҳ (дар ин ҳолат 0) дар массив нест.

Бештар дар бораи усулҳои синфи Array

Синфи Arrays ва истифодаи он - мақола баъзе усулҳои синфи Arrayро тавсиф мекунад

Чизи асосӣ дар бораи массивҳо

  • Хусусиятҳои асосии массив: намуди додаҳои дар он ҷойгиршуда, ном ва дарозӣ.
    Охирин ҳангоми оғозёбӣ (тақсим кардани хотира барои массив) муайян карда мешавад, ду параметри аввал ҳангоми эълони массив муайян карда мешаванд.

  • Андозаи массив (шумораи ҳуҷайраҳо) бояд дар int муайян карда шавад

  • Шумо наметавонед дарозии массивро пас аз сохтани он тағир диҳед.

  • Ба унсури массив тавассути индекси он дастрас шудан мумкин аст.

  • Дар массивҳо, мисли дигар ҷойҳо дар Java, элементҳо аз сифр сар карда рақамгузорӣ карда мешаванд.

  • Пас аз тартиби эҷоди массив, он бо арзишҳои пешфарз пур карда мешавад.

  • Массивҳо дар Java нисбат ба C++ ба таври дигар сохта шудаанд. Онҳо тақрибан ба нишондиҳандаҳои массивҳои динамикӣ монанданд.

Маводҳои муфид дар бораи массивҳо

Мехоҳед дар бораи массивҳо маълумоти бештар гиред? Лутфан ба мақолаҳои зер нигаред. Дар ин мавзӯъ бисёр маълумоти ҷолиб ва муфид вуҷуд дорад.
  1. Чизе дар бораи массивҳо - Мақолаи хуб дар бораи массивҳо

  2. Синфи Arrays ва истифодаи он - мақола баъзе усулҳои синфи Arrayро тавсиф мекунад

  3. Массивҳои бисёрченака - мақолаи муфассал дар бораи массивҳои бисёрченака бо мисолҳо.

  4. Массиви дарозии сифрро баргардонед, на нул - Муаллифи барномасозии муассир Ҷошуа Блох дар бораи чӣ гуна беҳтар баргардонидани массивҳои холӣ нақл мекунад

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION