Найти в Дзене
Даниил Лаер

Курс по Java-разработке бесплатно(7 урок)

Структуры данных Бывают случаи, когда нам необходимо хранить большое количество однотипной информации. Например, представим работу электронного журнала. Допустим, что в каком-то классе 15 человек, и этот класс написал самостоятельную работу по математике. После проверки работ, в системе появится 15 оценок. Но как их хранить? Создавать 15 переменных? И это только для одной самостоятельной, а сколько их ещё будет? Тем более, что так информацию обрабатывать очень тяжело. Вы только представьте, как нам придётся искать среднее арифметическое. double sr = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15) / 15; И это только 1 класс! А если надо обработать информацию о всей параллели? Или школе? Очевидно, что так хранить оценки не получится. Для хранение и обработки информации были разработаны структуры данных. Мы с вами познакомимся с теми, которые наиболее часто используются в промышленной разработке (массивы, списки, множества и словари). Массивы Самая проста
Оглавление

Структуры данных

Бывают случаи, когда нам необходимо хранить большое количество однотипной информации. Например, представим работу электронного журнала. Допустим, что в каком-то классе 15 человек, и этот класс написал самостоятельную работу по математике. После проверки работ, в системе появится 15 оценок. Но как их хранить? Создавать 15 переменных? И это только для одной самостоятельной, а сколько их ещё будет? Тем более, что так информацию обрабатывать очень тяжело. Вы только представьте, как нам придётся искать среднее арифметическое.

double sr = (a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15) / 15;

И это только 1 класс! А если надо обработать информацию о всей параллели? Или школе? Очевидно, что так хранить оценки не получится. Для хранение и обработки информации были разработаны структуры данных. Мы с вами познакомимся с теми, которые наиболее часто используются в промышленной разработке (массивы, списки, множества и словари).

Массивы

Самая простая структура данных - массив. Если грубо, то массив - такая переменная, в которой лежит много значений одного типа.

Массив - упорядоченный набор однотипных элементов.

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

double[] a; // объявление массива, содержащего действительные числа

int[] b = new int[20]; // объявление и инициализация массива, содержащего 20 целых чисел

char[] c = {'c', 'a', 't'}; // объявление массива, содержащего символы и его заполнение

Хорошо, массив мы создали, но что делать дальше? Как его заполнить, вывести на экран и обратиться к какому-либо элементу?

Индексация

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

-2

Например, если у нас есть массив:

int[] a = {5, 3, -4, 8, 5, -1, -2, -9, 0, 5, 4, 3, -4, 5, 3, 2, 5, -5, 4};

То всего в этом массиве 19 элементов, при этом, a[0] = 5, a[18] = 4, a[5] = -1.

Таким образом, можно генерировать массивы с помощью циклов. Создадим массив на 15 элементов, каждый элемент которого равен квадрату его индекса.

class A{

public static void main(String[] args){

int n = 15;

int[] a = new int[n];

for (int i = 0; i < n; i++)

a[i] = i * i;

//Теперь в массиве a лежат квадраты чисел от 0 до 14

}}

Считывание массива
С помощью индексации мы можем считывать массив и выводить его на экран, давайте посмотрим на код, который поможет нам считать значения с клавиатуры и сохранить их в массив. Пусть сначала вводится число n, а потом n чисел, которые нужно считать.

import java.util.Scanner;

class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = sc.nextInt();
// теперь в массиве а хранятся все введённые n чисел }
}
Вывод массива на экран
Хорошо, с одной задачей справились, теперь давайте попробуем вывести введённые значения на экран.

import java.util.Scanner;

class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = sc.nextInt();
// теперь в массиве а хранятся все введённые n чисел System.out.println(a);
}
}
Запустим программу, введём какие-нибудь числа (например 3 9 2 7) и увидим в консоли нечто подобное:[I@2f0e140b
Давайте разберёмся, что же появилось на экране. Массив - не примитивный тип данных, поэтому его просто так на экран не вывести. Информацию в консоли можно разбить на 2 части - до и после знака @. До собаки указывается тип данных, который вывелся, а после - адрес в памяти компьютера. Обратите внимание, что у вас вторая часть отличается от той, что в примере. А вот первая - такая же: "[I". Это говорит о том, что мы имеем дело с массивом, в котором лежат целые числа.Но как же тогда вывести массив на экран? Поможет простой цикл. Например такой код выведет массив на экран построчно:

import java.util.Scanner;

class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = sc.nextInt();
for (int i = 0; i < n; i++)
System.out.println(a[i]);
}
}
Для вывода в на одной строк можно изменить последний цикл так:

import java.util.Scanner;

class A{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = sc.nextInt();
for (int i = 0; i < n; i++)
System.out.print(a[i] + " ");
}
}
Длина массива

Если вдруг оказалось, что у вас есть массив, но вы не знаете его длину, то можно её найти с помощью команды length.

int[] a = {5, 3, -4, 8, 5, -1, -2, -9, 0, 5, 4, 3, -4, 5, 3, 2, 5, -5, 4};
int n = a.length; // в n лежит число 19

Свои вопросы можете задать в телеграмм-канале

https://tlgg.ru/@javaFreeWell

Курс по Java - разработке бесплатно(6 урок)

Курс по Java - разработке бесплатно(8 урок)