Уроки WEB дизайна




 Копирование массивов в Java


Для этого в языке Java существует специальный оператор array.copy. Конечно же, при использовании этого оператора надо иметь в виду, что массив, в который мы копируем элементы из другого массива, должен быть по размерам не меньше, или такой же или больше.
Например, создадим еще один массив. Опять целого типа. Пусть он называется а4. Возьмем его размер, например, чуть больше. Определим его опять в явном виде. Напишем таким образом. Пусть это будет 11,12,13,14 и т.д. Ну вот, пожалуй, элементов здесь хватит. Явно видно, что массив а4 больше, чем массив а2, и аналогично а3.
И далее скопируем элементы из массива а2 в массив а4. Теперь напишем таким образом System, далее точка. Теперь оператор array.copy. Откроем скобку. Теперь нужно указать из какого массива мы хотим копировать. Например, мы копируем из массива а2, запятая. Теперь надо указать с какого индекса мы хотим копировать элементы. Например, начнем копировать из элемента с индексом 2.
Далее надо указать, так сказать, массив приемник. Это у нас а4, запятая. Теперь надо указать индекс, начиная с которого в массиве а4 будут располагаться эти элементы, но пускай это будет у нас число 3, запятая. И далее надо указать количество копируемых элементов. Например, скопируем 3 элемента. Закроем скобку, точка с запятой.
Еще раз надо отметить, что во избежание ошибок и аварийного выхода, массив а4 должен быть достаточно большим, чтобы в нем поместились все копируемые элементы, начиная с того номера, который мы здесь указываем.
А теперь же, после копирования, попробуем распечатать массив а2 и а4. Для этого опять воспользуемся вот этими двумя строчками. Выделим их. Щелкнем правой кнопкой мыши и Сору. Далее вставим сюда. Правая кнопка и Paste.
И вместо а3 тут напишем а4, поскольку нас теперь интересует именно этот массив. Правда, надо отметить, что при распечатке вот таким образом, у нас из 4 распечатываются не все элементы, а только такое же количество элементов, как и в массиве а2, поскольку мы здесь задали распечатать количество элементов, равное а2 length. Т.е. то, которое есть в массиве а2.
Запустим теперь наше приложение. Для этого развернем меню Tools. Сначала скомпилируем ее. Далее запустим, используя команду Run Java Application. И вот можно увидеть, что у нас получилось. А именно, скопировалось у нас три элемента. Причем копирование у нас произошло со сдвигом. Т.е. вот это число 100, которое было на втором месте в первом массиве, перешло на третье место в массиве а4, вот в этом. То же самое произошло со следующим элементом. Вот эта 4 тоже перешла сюда, но со сдвигом. И следующая 4 тоже.
А все остальные элементы массива а4 остались такими же, как и были. Вот в начале 11,12,13 и в конце 17,18. Эти элемента массива не изменились. Изменились только вот эти три, которые стали равны соответствующим трем элементам из массива источника. Закроем теперь наше консольное окно и опять вернемся в наш обычный текстовый редактор.
При работе с массивами, иногда возникает необходимость по сортировке элементов массива и для этого существует специальный оператор sort. Например, как мы помним, у нас уже есть массив а2, попробуем теперь его элементы скопировать в новый массив, который сейчас создадим.
Для этого создадим массив целого типа int. Далее введем квадратные скобки. Определим новый массив. Пусть это будет массив а5. Знак равнения. И далее напишем таким образом, new int и далее укажем размер нашего массива. Размер укажем, как длину массива а2. a2 точка далее length. Закроем скобку, точка с запятой.
Теперь у нас а5 и а2, оба массива одинаковой длины. Теперь скопируем все элементы а2 в а5. Для этого вновь воспользуемся оператором System.arraycopy. Так и напишем. Далее откроем скобку. Массив источник у нас будет а2. Запятая. Копировать мы будем из элемента с индексом 0. Запятая. Далее у нас массив приемник будет а5. Запятая. Опять мы копируем, начиная с индекса 0.
И далее количество копируемых элементов. Мы возьмем все элементы, поэтому напишем а2 length. Закроем скобку. Точка с запятой. Теперь же, после того, как мы все элементы скопировали, попробуем элементы массива а5 отсортировать. Для этого надо написать таким образом Arrays, точка sort. И внутри скобок название массива а5. Закроем скобку. Точка с запятой.
Теперь попробуем массивы а2 и а5 распечатать. Для этого воспользуемся опять вот этой частью println, вместе с соответствующим циклом. Выделим эти строки. Щелкнем правой кнопкой мыши, Сору. Далее встанем сюда. Правая кнопка и Paste. И теперь единственное, здесь нам надо изменить, вместо а4 написать распечатку массива а5
и кроме того, чтобы отделить эту задачу от всех предыдущих, введем какую-либо строчку. Для этого скопируем вот этот оператор. Щелкнем правой кнопкой мыши, Сору. Встанем сюда. Правая кнопка мыши и Paste. И внутри кавычек напишем просто-напросто вот такую разделительную линию. Далее закроем кавычки. Закроем скобку. Точка с запятой.
Теперь, для того чтобы эта программа корректно работала, нам нужно так сказать узаконить использование вот этой функции Arrays.sort из класса Arrays. Для этого в нашей программе мы должны импортировать соответствующий пакет util. Поэтому напишем таким образом, import, далее java, точка, util, точка, звездочка, точка с запятой.
Теперь мы можем скомпилировать программу. Для этого развернем меню Tools, Compile Java. Компиляция прошла успешно. Теперь Tools и Run Java Application. И можно видеть результат выполнения нашей программы. Как мы видим, у нас и массив а2 и массив а5 состоят из одних и тех же наборов чисел, но массив а5 у нас в отличие от массива а2, расположен по своему возрастанию. Т.е. отсортирован. Начинается вот с единицы и кончается именно на том, значении которое равно 100. В отличие от массива а2, где все эти элементы расположены так сказать в рабочем беспорядке.
Закроем окно нашего приложения и опять вернемся в наш текстовый редактор. В языке Java для массивов существует также возможность поиска номера элемента с определенным значением. Например, напишем таким образом. Скопируем вот эти три строчки. Щелкнем правой кнопкой мыши, Сору.
Затем вставим их сюда, Paste. Следующая наша задача будет опять отделена вот таким прочерком. И далее напишем таким образом. На этот раз i1 возьмем от 1 до 10. И будем искать вот эти числа от 1 до 10, т.е. i1, присутствуют ли они в массиве а2.
Для этого вот это все уберем, и напишем так. Arrays, поскольку этот метод сортировки есть именно в этом классе, точка. Далее binarySearch. Далее откроем скобку. Теперь нам нужно указать массив, в котором мы будем искать. Пусть это будет массив а2, запятая и далее, что мы будем искать. Искать мы будем элемент с значением i1. Закроем скобку.
А теперь скомпилируем программу. Развернем меню Tools, Compile Java. Компиляция прошла успешно. Теперь вновь меню Tools, Run Java Application и можно увидеть, что у нас получилось. Как мы видим, выводится номер элемента, значение которого равно вот этим числам. А если такого элемента нет, тогда отображается отрицательное число. Вот, как мы видим, в массиве а2, вот это у нас массив а2 был распечатан в предыдущем примере. Элемента со значением 0, нет. А элемент с значением 1, есть. И у этого элемента, со значением 1, индекс 0. Что мы тут и получили.
А элемент, значение которого равно 2, его номер у нас единица, что у нас и отображается. Элемента в массиве а2, который равнялся бы 3, нет, а элемент, который равнялся бы 4, у нас есть, у него индекс 3. Вот тройку мы здесь и получаем. И далее, элементы со значением 5, 6, 7, 8 и 9 отсутствуют. Тут таких элементов нет. И в результате здесь все отрицательные числа. Закроем теперь окно нашей программы.

Карта сайта Реклама
На нашем сайте Вы сможете найти любую информацию о программах 3D Max, Macromedia Flash MX, Corel Draw 12, Adobe Illustrator и многих других. Вы не найдете на данном сайте различные серийники, ключи, активацию, русификаторы, кряк, crack, keygen, серийные ключи и кейгены для этих программ. Для приобретения или скачивания программ воспользуйтесь ссылками на официальных сайтах производителей.