Динамическое создание массивов java

Как создать динамический массив в java

В Java динамический массив создается с использованием класса ArrayList . Этот класс находится в пакете java.util и обеспечивает динамическое управление массивом. Чтобы создать динамический массив, нужно выполнить следующие шаги:

  • Создайте объект класса ArrayList , указав тип элементов, которые будут храниться в массиве. Например, для создания массива целых чисел:
ArrayListInteger> nums = new ArrayList<>(); 
nums.add(1); nums.add(2); nums.add(3); 
int firstElement = nums.get(0); // 1 int secondElement = nums.get(1); // 2 int thirdElement = nums.get(2); // 3 
  • Динамический массив автоматически расширяется при добавлении новых элементов. Например, чтобы добавить еще один элемент в конец массива:

Источник

Java-массивы. Динамические массивы в Java

Java_Deep_19.8-5020-2f283e.png

Массив — набор определённого числа однотипных элементов. Использование массива позволяет нам не создавать большое количество переменных, а создать всего лишь одну переменную, имеющую вид массива. В отличие от стандартных переменных массивы содержат больше, чем одно значение. В программировании это очень важно, ведь при разработке софта может потребоваться огромное количество данных.

Лучшая ассоциация для массива — стена с почтовыми ячейками. Каждая ячейка помечена квартирными номерами (индексы массива), внутри лежат газеты и письма (элементы массива), а получить содержимое можно, открыв ящик ключом (обратиться к содержимому по позиции элемента в массиве через индекс). При этом содержимое массива может включать в себя как простые данные (это одномерный массив), так и несколько вложенных массивов (это многомерный массив).

Массив однороден, и во всех ячейках должны храниться элементы одного типа. Если это int, то мы говорим про массив целых чисел, который может содержать лишь целые числа. Массив строк будет содержать лишь строки, а массив, состоящий из элементов созданного класса Dog, может содержать лишь объекты Dog.

Как происходит объявление массива в Java

Как и любую переменную в Java, массив надо объявить. Для этого есть два способа. Первый больше отвечает стилю Java, второй является наследием языка C.

1-20219-84f278.png

Вне зависимости от способа, dataType — это тип переменных в массиве. Посмотрите внимательно на примеры — в них объявлены 2 массива. Один предназначен для целых чисел типа int, другой — для объектов типа Object.

Можно сказать, что во время объявления массива ему присваивается как имя (ArrayName), так и тип переменных.

Создание массива

Чтобы создать массив в Java, нужно зарезервировать место в памяти, для чего используем оператор new:

Здесь у нас typeOfArray — тип массива, length — длина массива или число ячеек, выраженное в целых числах (int). Но мы лишь выделили память под массив, не связав его ни с какой переменной, ранее объявленной. Как правило, сначала массив объявляют, потом создают:

 
int[] myArray; // объявление массива myArray = new int[10]; // создание массива, выделение памяти на 10 элементов типа int

Итак, объявлен массив из целых чисел с именем myArray. После объявления мы сообщили, что массив состоит из 10 ячеек. Но можно использовать и более сокращённый синтаксис:

 
int[] myArray = new int[10]; // объявление и выделение памяти за один раз

Что же, мы создали массив с помощью new. После этого в его ячейках будут записаны значения по умолчанию. Например, для численных типов — это нули (0), для boolean — false, а если говорить о ссылочных типах, то null. Это значит, что после выполнения кода

у нас на выходе будет массив из 10 целых чисел, причём в каждой ячейке будет записан 0.

Длина массива length

Длина массива — число элементов, под которое этот массив рассчитан. Длину массива изменить после создания нельзя.

Ещё нюанс: элементы массива в Java нумеруются с нуля. Таким образом, массив на 10 элементов состоит из чисел в диапазоне 0-9.

2-20219-9b55f8.png

Если нужно получить доступ к длине нашего массива, используют переменную length:

 
int[] myArray = new int[10]; // создали массив, присвоили имя myArray System.out.println(myArray.length); // вывели в консоль длину массива

Инициализация массива

Инициализация — это заполнение массива конкретными данными, а не данными по умолчанию.

Нижеследующий код позволит создать массив, включающий в себя 4 сезона года. Также мы выполним заполнение массива строками-названиями сезонов:

 
String[] seasons = new String[4]; /* выполнили объявление и создание массива из 4 строк, где по умолчанию записано null, ведь строка — ссылочный тип данных*/ seasons[0] = "Winter"; /* в первую ячейку записали строку Winter*/ seasons[1] = "Spring"; /* во вторую ячейку (номер 1) записали строку Spring и т. д.*/ seasons[2] = "Summer"; seasons[3] = "Autumn";

Так мы записали названия всех сезонов. Но в принципе можно всё сделать проще, совместив инициализацию и объявление:

 
String[] seasons = new String[] ;

Или даже так, опустив оператор new:

Динамический массив в Java

Минус массива — статичность, то есть необходимость задавать размер заранее. Для этого и придумали динамический массив, который может менять размер в процессе выполнения программы. Например, статические массивы работают по следующей схеме:

3-20219-286ccf.png

А динамические массивы в Java функционируют несколько иначе:

4-20219-c45fc5.png

Так как для копирования массива используется специальная нативная функция, проблем с «переездом» не возникает.

В общем, как вы уже догадались, динамические массивы применяются во время обработки наборов однородных данных, размер которых на момент написания программы нам неизвестен.

Источник

Динамическое создание массивов java

Learn Latest Tutorials

Splunk tutorial

SPSS tutorial

Swagger tutorial

T-SQL tutorial

Tumblr tutorial

React tutorial

Regex tutorial

Reinforcement learning tutorial

R Programming tutorial

RxJS tutorial

React Native tutorial

Python Design Patterns

Python Pillow tutorial

Python Turtle tutorial

Keras tutorial

Preparation

Aptitude

Logical Reasoning

Verbal Ability

Company Interview Questions

Artificial Intelligence

AWS Tutorial

Selenium tutorial

Cloud Computing

Hadoop tutorial

ReactJS Tutorial

Data Science Tutorial

Angular 7 Tutorial

Blockchain Tutorial

Git Tutorial

Machine Learning Tutorial

DevOps Tutorial

B.Tech / MCA

DBMS tutorial

Data Structures tutorial

DAA tutorial

Operating System

Computer Network tutorial

Compiler Design tutorial

Computer Organization and Architecture

Discrete Mathematics Tutorial

Ethical Hacking

Computer Graphics Tutorial

Software Engineering

html tutorial

Cyber Security tutorial

Automata Tutorial

C Language tutorial

C++ tutorial

Java tutorial

.Net Framework tutorial

Python tutorial

List of Programs

Control Systems tutorial

Data Mining Tutorial

Data Warehouse Tutorial

Javatpoint Services

JavaTpoint offers too many high quality services. Mail us on h[email protected], to get more information about given services.

  • Website Designing
  • Website Development
  • Java Development
  • PHP Development
  • WordPress
  • Graphic Designing
  • Logo
  • Digital Marketing
  • On Page and Off Page SEO
  • PPC
  • Content Development
  • Corporate Training
  • Classroom and Online Training
  • Data Entry

Training For College Campus

JavaTpoint offers college campus training on Core Java, Advance Java, .Net, Android, Hadoop, PHP, Web Technology and Python. Please mail your requirement at [email protected].
Duration: 1 week to 2 week

Like/Subscribe us for latest updates or newsletter RSS Feed Subscribe to Get Email Alerts Facebook Page Twitter Page YouTube Blog Page

Источник

Создать динамический массив в Java

Создать динамический массив в Java

Массив - это структура данных фиксированного размера, размер которой нельзя изменить после объявления. Динамический массив дает нам возможность создавать массивы динамических размеров. Мы можем соответственно увеличивать и уменьшать эти размеры, и в этой статье мы обсудим, как создать динамический массив Java.

Создайте динамический массив с помощью пользовательской логики в Java

В этом примере мы используем настраиваемую логику, которая включает методы для добавления элемента в конец массива или по любому индексу. При заполнении массива размер массива увеличивается в два раза. Мы также удаляем и сжимаем массив в процессе.

Мы используем два класса для проверки логики динамического массива; первый - это DynamicClass , а второй - DynamicArrayTest . В DynamicArrayTest мы создаем массив типа int intArray и две переменные int с именами size и capacity . Размер массива - это количество элементов в нем, а емкость массива - это общее пространство в нем.

Создаем конструктор класса DynamicArrayTest и инициализируем intArray массивом int размером 2 . Затем мы инициализируем size 0 и capacity как 2 . Наконец, чтобы добавить элемент в последнюю позицию массива, мы создаем метод addElementToArray() , который принимает в качестве параметра элемент int . В этой функции мы сначала проверяем, совпадают ли size и capacity массива.

Если это правда, мы вызываем функцию boostArraySize() , потому что массив заполнен. В методе increaseArraySize() мы создаем пустой массив int tempArray для временного хранения элементов массива и сравниваем size и capacity . Мы инициализируем tempArray массивом и устанавливаем его размер в два раза больше текущей емкости массива.

В increaseArraySize() мы проверяем, больше ли capacity или равно 0 . Затем мы вызываем метод System.arraycopy() , который копирует элементы одного массива в другой массив. Здесь мы указываем массив, который нужно скопировать, начальный индекс для копирования, массив, в который мы хотим скопировать элементы, целевую позицию и размер нового массива, который нам нужен. После этого мы повторно инициализируем intArray с элементами tempArray и увеличиваем размер capacity .

Теперь мы создаем метод для удаления элемента и называем его removeElement() . В этой функции мы проверяем size массива, если он больше нуля. Затем мы заменяем последний элемент массива нулем и уменьшаем размер на единицу. Обратите внимание, что этот метод удаляет только последний элемент массива.

Когда массив заполнен, его емкость увеличивается, и пустые пространства заполняются. Эти пустые неиспользуемые пространства могут увеличить использование памяти и мусор в памяти. Чтобы исправить это, мы удалим пустые индексы с помощью функции shrinkSize() . Здесь мы создаем временный массив и копируем в функцию все элементы intArray , размер которых совпадает с его элементами, а затем копируем элементы массива обратно в intArray .

class DynamicArrayTest   int[] intArray;  int size;  int capacity;   public DynamicArrayTest()   intArray = new int[2];  size = 0;  capacity = 2;  >   public void addElementToArray(int a)   if (size == capacity)   increaseArraySize();  >  intArray[size] = a;  size++;  >   public void increaseArraySize()   int[] tempArray = null;  if (size == capacity)   tempArray = new int[capacity * 2];    if (capacity >= 0)   System.arraycopy(intArray, 0, tempArray, 0, capacity);  >  >  >  intArray = tempArray;  capacity = capacity * 2;  >   public void shrinkSize()   int[] temp;  if (size > 0)   temp = new int[size];  System.arraycopy(intArray, 0, temp, 0, size);  capacity = size;  intArray = temp;  >  >   public void removeElement()   if (size > 0)   intArray[size - 1] = 0;  size--;  >  >  >  public class DynamicArray   public static void main(String[] args)   DynamicArrayTest dynamicArrayTest = new DynamicArrayTest();   dynamicArrayTest.addElementToArray(10);  dynamicArrayTest.addElementToArray(20);  dynamicArrayTest.addElementToArray(30);  dynamicArrayTest.addElementToArray(40);  dynamicArrayTest.addElementToArray(50);   System.out.println("items of intArray:");   for (int i = 0; i  dynamicArrayTest.capacity; i++)   System.out.print(dynamicArrayTest.intArray[i] + " ");  >   System.out.println();   System.out.println("Capacity of the intArray: " + dynamicArrayTest.capacity);  System.out.println("Size of the intArray: " + dynamicArrayTest.size);   dynamicArrayTest.removeElement();   System.out.println("\nItems after removing the last element");   for (int i = 0; i  dynamicArrayTest.capacity; i++)   System.out.print(dynamicArrayTest.intArray[i] + " ");  >   System.out.println("\nCapacity of the intArray: " + dynamicArrayTest.capacity);  System.out.println("Size of the intArray: " + dynamicArrayTest.size);   dynamicArrayTest.shrinkSize();   System.out.println("\nItems after removing unused space");   for (int i = 0; i  dynamicArrayTest.capacity; i++)   System.out.print(dynamicArrayTest.intArray[i] + " ");  >   System.out.println("\nCapacity of the intArray: " + dynamicArrayTest.capacity);  System.out.println("Size of the intArray: " + dynamicArrayTest.size);  > > 
items of intArray: 10 20 30 40 50 0 0 0 Capacity of the intArray: 8 Size of the intArray: 5  Items after removing the last element 10 20 30 40 0 0 0 0 Capacity of the intArray: 8 Size of the intArray: 4  Items after removing unused space 10 20 30 Capacity of the intArray: 3 Size of the intArray: 3 

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

Сопутствующая статья - Java Array

Copyright © 2023. All right reserved

Источник

Читайте также:  Перевод интерфейса в php
Оцените статью