Как инициализировать массив в java

Содержание:

Ассоциативные массивы в Java

У ассоциативного массива в качестве ключей применяются строки. Мы можем представить его структуру данных в виде совокупности пары «ключ-значение». В таком массиве, как ассоциативный, любое значение связано с конкретным ключом, а доступ к значению производится по имени ключа.

Что касается языка программирования Java, то в нём ассоциативные массивы не поддерживаются. А ведь в некоторых ситуациях, работая с массивами, было бы неплохо обратиться к элементу не по индексу, а по ключу.

Однако есть способ реализовать похожую структуру данных, используя стандартные средства Java SE. В частности, мы можем создать простейший ассоциативный массив, воспользовавшись классом HashMap и установив для его экземпляра строковый тип данных ключа.

Посмотрим, как это работает:

    HashMap<String, Integer> fruits = new HashMap();
fruits.put("Число апельсинов", 5);
fruits.put("Число яблок", 10);
fruits.put("Число мандаринов", 7);
System.out.println(fruits.get("Число мандаринов"));

Мы можем создать ассоциативный массив и с более сложной структурой, поместив объекты HashMap друг в друга и получив тем самым «ассоциативные массивы в ассоциативном массиве». Посмотрим, как это выглядит на практике:

    HashMap<String, Integer> fruits = new HashMap();
fruits.put("Число апельсинов", 5);
fruits.put("Число яблок", 10);
fruits.put("Число мандаринов", 7);
HashMap<String, Integer> milkProducts = new HashMap();
milkProducts.put("Число пачек творога", 2);
milkProducts.put("Число пакетов молока", 3);
milkProducts.put("Число банок сметаны", 17);
HashMap<String, HashMap<String, Integer> > eat = new HashMap();
eat.put("Фрукты", fruits);
eat.put("Молочные продукты", milkProducts);
System.out.println(eat.get("Молочные продукты").get("Число пакетов молока"));

В результате мы решим проблему отсутствия ассоциативных массивов в Java.

При подготовке статьи использовались следующие материалы:
— Java Multidimensional Arrays;
— «Ассоциативные массивы в Java».

типы массивов в Java

В Java есть 2 типа массивов:

  • Одномерный массив — он содержит только 1 строку и 1 столбец. Все приведенные выше примеры относятся к одномерному массиву
  • Многомерный массив — содержит несколько строк и несколько столбцов. Другими словами, это массив массивов, в котором все строки имеют одинаковое количество столбцов. Например: 2 * 2 матрица
  • Неровный массив — каждая строка содержит разное количество столбцов.

Многомерные массивы в java

Многомерные массивы могут иметь несколько строк и столбцов. Индекс в первом [] представляет строки, а второй [] представляет столбцы.

Например: int [] [] a = new int

Это означает, что массив содержит 2 строки и 3 столбца. Ниже приведено схематическое изображение многомерного массива.

Пример создания многомерных массивов строк

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

public class ArrayMulti {

  public static void main(String[] args) {
    String[][] arrNames = {{"John","Jacob"},{"Thomas","Martin"}};
    System.out.println(arrNames + " " + arrNames);
    System.out.println(arrNames + " " + arrNames);

  }

}
Output:
John Jacob 
Thomas Martin

Пример двумерного массива целых чисел

Здесь мы создаем двумерный массив целых чисел, состоящий из 2 строк и 2 столбцов. Мы присваиваем значения этим элементам массива внутри цикла for. Первый цикл for обозначает строки, а второй цикл for — столбцы.

public class ArrayMulti {

  public static void main(String[] args) {
    //Declare and create multidimensional array
    int[][] arrnum = new int;
    for(int i=0;i<2;i++) {
      for(int j=0;j<3;j++) {
        //Assign values to array elements
        arrnum = i+1;
        System.out.print(arrnum + " ");
      }
      System.out.println();
    }

  }

}
Output:
1 1 1 
2 2 2 

Зубчатые массивы в Java

Неровный массив — это также двумерный массив, имеющий другое количество столбцов. Другими словами, в каждой строке разное количество столбцов. Инициализация массива с зазубринами отличается от инициализации обычного 2D-массива.

Инициализация массива с зазубринами

При создании массива мы указываем количество строк. В этом примере это 2. В следующих двух операторах для каждого массива строк мы указываем количество столбцов. Здесь в 2-й строке 1 столбца, а во 3-й строке 2 столбца.

int[][] arrnum = new int[];
arrnum = new int;
arrnum = new int;

Пример зазубренного массива путем присвоения значений в цикле for

public class JaggedArray {

  public static void main(String[] args) {
    int[][] arrnum = new int[];
    arrnum = new int;
    arrnum = new int;

    int val=1;
    //Assign values
    for(int i=0;i<arrnum.length;i++) {
      for(int j=0;j<arrnum.length;j++) {
        arrnum = val;
      }
    }
    
    //Print the values
    for(int i=0;i<arrnum.length;i++)
    {
      for(int j=0;j<arrnum.length;j++)
      {
        System.out.print(arrnum + " ");
      }
      System.out.println();
    }
  }

}
Output:
1 1 1 
1 1 1 1 

Пример зазубренного массива с инициализацией значений во время создания массива

public class JaggedArray {

  public static void main(String[] args) {
    int[][] arr = {{4,5,6},{1,2},{7,9,8}};
    for(int i=0;i<3;i++)
    {
      for(int j=0;j<arr.length;j++) {
        System.out.print(arr + " ");
      }
      System.out.println();
    }
  }
}
Output:
4 5 6 
1 2 
7 9 8 

Processing Arrays

When processing array elements, we often use either for loop or foreach loop because all of the elements in an array are of the same type and the size of the array is known.

Example

Here is a complete example showing how to create, initialize, and process arrays −

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList;
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList;
      for (int i = 1; i < myList.length; i++) {
         if (myList > max) max = myList;
      }
      System.out.println("Max is " + max);  
   }
}

This will produce the following result −

Инициализируем двухмерный массив в Java

Давайте посмотрим, как инициализируется многомерный (в нашем случае — двумерный) Java-массив:

int[][] a = {
      {1, 2, 3}, 
      {4, 5, 6, 9}, 
      {7}, 
};

При этом каждый компонент массива будет тоже представлять собой массив, причём с разной длиной:

Докажем это с помощью кода:

class Two2DArray {
   public static void main(String[] args) {

      int[][] a = {
            {1, 2, 3}, 
            {4, 5, 6, 9}, 
            {7}, 
      };

      System.out.println("Длина ряда № 1: " + alength);
      System.out.println("Длина ряда № 2: " + a1length);
      System.out.println("Длина ряда № 3: " + a2length);
   }
}

Результат будет следующим

Длина ряда 1: 3
Длина ряда 2: 4
Длина ряда 3: 1

Т. к. многомерный массив включает в себя отдельные массивы (a, a и a), мы можем задействовать метод length, чтобы определить длину каждого ряда 2-мерного Java-массива.

Теперь выведем на экран все элементы двумерного массива, используя циклы:

class TwoDArray {
   public static void main(String[] args) {

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

     for (int i = ; i < a.length; ++i) {
        for(int j = ; j < ailength; ++j) {
           System.out.println(ai]);
        }
     }
   }
}

Когда надо пройтись по элементам массива, использование цикла for…each — одно из лучших решений. Пример сортировки двухмерного Java-массива мы можем записать посредством цикла for…each таким образом:

class TwoDArray {
   public static void main(String[] args) {

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

     for (int[] innerArray a) {
        for(int data innerArray) {
           System.out.println(data);
        }
     }
   }
}

Запустив этот код, мы увидим итог заполнения двумерного Java-массива:

1
-2
3
-4
-5
6
9
7

Что такое массив в Java?

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

Когда Вам например будет нужен человек под номером 5, Вы просто позовете его по номеру. А если Вам нужно будет узнать сколько людей в шеренге — можно посмотреть на порядковый номер последнего человека в строю. Удобно не правда?

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

Только в программировании принято начинать нумерацию не с единицы а с нуля. Первый елемент в массиве будет иметь порядковый номер . Еще в программировании говорят не «порядковый номер», а «индекс».

Допустим, Вам нужно создать 5 целочисленных переменных и задать им некоторое значение. Как Вы это будете делать? Не зная массивов, Вы скорее всего начнете писать вот так: int a = 2, b = 3, c = 5, d = 21, e = 2.

Имея в арсенале такой тип данных как массивы, Вы можете писать так: int a = {2, 3, 5, 21, 2}.

10 ответов

из того, что я вижу, вы просто пытаетесь увидеть, равны ли они, если это правда, просто идите с чем-то вроде этого:

Это стандартный способ сделать это.

Ops, он швы, что массивы также должны быть отсортированы, чтобы считаться равными, из Java doc:

«два массива считаются равными, если оба массива содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах одинаковые. Другими словами, два массива равны если они содержат одни и те же элементы в одном и том же порядке»

Извините, что пропустил это.

использовать Arrays.equals(ary1,ary2); // возвращает логическое значение

редактировать вы можете использовать Arrays.deepEquals(ary1,ary2) сравнить 2D массивы а также

также проверить этой ссылке для сравнения сравнение между Arrays.equls(ar1,ar2) и Arrays.deepEquals(ar1,ar2)

Изменить 2 если вы не хотите использовать эти методы библиотеки, вы можете легко реализуйте свой метод следующим образом:

Если вы знаете, что массивы имеют одинаковый размер, это доказуемо быстрее сортировать, а затем сравнить

Если вы не хотите изменять порядок данных в массивах, сделайте System.arraycopy первый.

ни один из существующих ответов не включает использование компаратора и поэтому не может использоваться в двоичных деревьях или для сортировки. Поэтому я просто оставлю это здесь:

вы можете проверить равенство массивов с помощью Apache Commons ArrayUtils#isEquals () метод.

хотя есть что-то легкое типа .equals , Я хотел бы указать на две ошибки, которые вы сделали в коде. Первый: когда вы проходите через массивы, вы говорите b и true или false . Затем вы начинаете снова проверять, из-за for-loop. Но каждый раз вы даете b значение. Итак, что бы ни случилось, значение b получает значение всегда является значением последнего for-loop. В следующий раз, set boolean b = true , if equal = true , ни if equal = false , b=false .

во-вторых, теперь вы проверяете каждое значение в array1 С каждым значением в array2 . Если я правильно понимаю, вам нужно только проверить значения в том же месте в массиве, то есть вы должны были удалить второй for-loop и проверить так: if (array2 == array1) . Тогда ваш код также должен функционировать.

ваш код будет работать примерно так:

но, как сказал другой, проще было бы: Матрицы.равно (ary1, ary2);

основываясь на этом комментарии, у вас уже есть свой алгоритм:

Проверьте, имеют ли оба массива одинаковую длину:

числа должны быть одинаковыми в одном и том же положении:

зная это, вы можете создать свой код следующим образом (это не Java-код, это алгоритм):

Примечание: ваша функция должна возвращать boolean , а не void , затем восстановите возвращаемое значение в другой переменной и используйте его для печати сообщения » true «или»false»:

Источник

Объявление, создание, инициализация

Перед тем как массив использовать, его нужно:

  1. Объявить;
  2. Создать;
  3. Инициализировать.

Запомните это порядок действий и никогда не нарушайте его.При объявлении нужно сначала указать какой тип данных будет там храниться.

Все дело в том, что Java строго типизированный язык программирования. Это означает что Вы не можете объявить переменную типа строка (String), а потом присвоить этой переменной числовое значение.

Например такой код работать не будет: String a = 1;

Именно поэтому при объявлении массива сначала указывают тип данных который он будет принимать. Дальше идут [] (квадратные скобки) и имя переменной. Или имя переменной, квадратные скобки. Разницы не будет:

char nameOfArray[], int anotherName [], char [] nameOfArr, String [] p — это все правильные варианты для объявления массивов.

После того, как array был объявлен, его нужно создать. Дело в том, что в массив это объект. Объекты в java хранятся в памяти отдельно от переменных и примитивных типов. Для каждого объекта выделяется память в программе. В которой он будет находиться до того момента пока будет нужен. Чтобы указать программе что мы резервируем место для объекта нужно воспользоваться ключевым словом new.

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

Выше Вы можете видеть пример создания и инициализации массива. Сразу после знака равно (=) идет создание array с именем a. В квадратных скобках указана размерность (количество элементов).

Сразу после создания, в объект будут записаны значения по умолчанию. Для численного массива это ноль (0), для объекта — null, для boolean — false.

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

Если Вы хотите поменять эти данные — сделать это довольно просто: нужно обратиться по индексу массива к его элементу и присвоить ему значение. Например:

В квадратных скобках на примере выше указан индекс, а после знака равно — новое значение элемента по данному индексу.

Есть еще один способ инициализации:

Таким образом мы объединяем объявление, создание, инициализацию в одну строку. При таком подходе можно даже опустить new char[]:

Сортировка объектов

Показанный ранее пример Arrays.sort() работает только для массивов примитивных типов данных, которые имеют порядок:

  • естественный;
  • числовой;
  • символьный в таблице ASCII (двоичное число, представляющее символ).

У объектов может не быть естественного порядка сортировки, поэтому вам нужно предоставить другой объект, который может определять порядок ваших объектов. Такой объект называется компаратором – это интерфейс.

Вот первый класс для объектов, которые мы хотим отсортировать:

private static class Employee{
    public String name;
    public int    employeeId;

    public Employee(String name, int employeeId){
        this.name       = name;
        this.employeeId = employeeId;
    }
}

Класс Employee – это простая модель сотрудника, у которого есть имя и идентификатор. Вы можете отсортировать массив объектов Employee по имени или по идентификатору сотрудника.

Вот первый пример сортировки массива объектов Employee по их имени с помощью метода Arrays.sort():

Employee[] employeeArray = new Employee;

employeeArray = new Employee("Xander", 1);
employeeArray = new Employee("John"  , 3);
employeeArray = new Employee("Anna"  , 2);

java.util.Arrays.sort(employeeArray, new Comparator() {
    @Override
    public int compare(Employee e1, Employee e2) {
        return e1.name.compareTo(e2.name);
    }
});


for(int i=0; i < employeeArray.length; i++) {
    System.out.println(employeeArray.name);
}
  1. Сначала объявляется массив.
  2. Три объекта Employee создаются и вставляются в массив.
  3. Метод Arrays.sort() вызывается для сортировки массива. В качестве параметра передаем массив employee и реализацию Comparator, которая может определять порядок объектов Employee. Это создает анонимную реализацию интерфейса Comparator.

В примере важно уловить реализацию метода compare() анонимной внутренней реализации интерфейса Comparator. Этот метод возвращает:

  • положительное число, если первый объект «больше»(позже в порядке сортировки), чем второй объект;
  • 0 – они «равны»(в порядке сортировки);
  • отрицательное число, если первый объект «меньше» (ранее в порядке сортировки), чем второй объект.

В приведенном выше примере мы просто вызываем метод String.compare(), который выполняет для нас сравнение (сравнивает имена сотрудников).

После сортировки массива мы перебираем его и выводим имена сотрудников. Вывод:

Anna
John
Xander

Обратите внимание, как порядок был изменен по сравнению с порядком, в котором они были первоначально вставлены в массив. Сортировка объектов Employee по их идентификатору сотрудника на основании предыдущего примера с измененной реализацией метода compare() анонимной реализации интерфейса Comparator:

Сортировка объектов Employee по их идентификатору сотрудника на основании предыдущего примера с измененной реализацией метода compare() анонимной реализации интерфейса Comparator:

Employee[] employeeArray = new Employee;

employeeArray = new Employee("Xander", 1);
employeeArray = new Employee("John"  , 3);
employeeArray = new Employee("Anna"  , 2);

java.util.Arrays.sort(employeeArray, new Comparator() {
    @Override
    public int compare(Employee e1, Employee e2) {
        return e1.employeeId - e2.employeeId;
    }
});

for(int i=0; i < employeeArray.length; i++) {
    System.out.println(employeeArray.name);
}

Вывод:

Xander
Anna
John

Чтобы сравнить объекты Employee в массиве сначала по их имени, а если оно совпадает, то по их идентификатору сотрудника, реализация compare():

java.util.Arrays.sort(employeeArray, new Comparator() {
    @Override
    public int compare(Employee e1, Employee e2) {
        int nameDiff = e1.name.compareTo(e2.name);
        if(nameDiff != 0) { return nameDiff; }
    
        return e1.employeeId - e2.employeeId;
    }
});

Генерация случайных чисел

В пакете java.util описан класс , являющийся генератором случайных чисел. На самом деле в силу своей природы не может генерировать истинно случайные числа. Числа генерируются определенным алгоритмом, причем каждое следующее число зависит от предыдущего, а самое первое — от некоторого числа, называемого инициализатором. Две последовательности «случайных» чисел, сгенерированных на основе одного инициализатора, будут одинаковы.

Класс  имеет два конструктора:

 — создает генератор случайных чисел, использующий в качестве инициализатора текущую дату (число миллисекунд с 1 января 1970);

 — создает генератор случайных чисел, использующий в качестве инициализатора число .

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

От генератора можно получать случайные числа нужного типа с помощью методов , ,, , . Вещественные числа генерируются в диапазоне от 0 до 1 (не включая 1), а целые — из всего диапазона возможных значений. Можно сгенерировать целое число в нужном диапазоне (от 0 до ) методом  или .

Наконец, можно заполнить случайными числами целый массив (предварительно созданный), воспользовавшись методом. Элементы массива  должны иметь тип .

Other Array Techniques

You can actually create Java arrays of unknown lengths immediately, unlike C++ arrays and arrays from a lot of other programming languages.

Above I’m getting user input to tell me how big to make the array.

You can also preset the values of the variables inside the array. Here’s an example of creating a char array, but creating it with the values already inside.

This creates a character array of length 4, because there are 4 elements inside the comma separated list given inside curly brackets. You can put as many or as few elements as you like inside the curly brackets, just make sure those elements are separated by commas. The array is automatically the size of the number of elements you provide.

In case you forgot, the reason those letters have single quotes around them is because char values always have the single quotes around them.

Note: Once the size of an array variable is given, it cannot easily be changed, so if you need an array to hold a large number of values, try to figure out the absolute maximum size the array might have to be.

In the next tutorial we’re gonna have another look at Java methods. As always, I’ll take any questions or comments in the form below. Until next time…

If you have any questions, comments, or concerns, feel free to contact us.

Применение массивов

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

Важно отметить, что индекс первого элемента –. Обычно путаница возникает тогда, когда начинаешь думать, что раз в массиве 10 элементов, то их индексы будут перечисляться с 1 до 10

Но на самом деле счет идет от до 9. Например, возвращаясь к примеру с лотерей, можно создать массив из 6 элементов, и задать им числа из лотереи:

int[] lotteryNumbers = new int;
lotteryNumbers = 16;
lotteryNumbers = 32;
lotteryNumbers = 12;
lotteryNumbers = 23;
lotteryNumbers = 33;
lotteryNumbers = 20;

Сокращённый способ заполнения массива:

int[] lotteryNumbers = {16,32,12,23,33,20};

String[] names = {"John", "James", "Julian", "Jack", "Jonathon"};

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

Чтобы получить значение элемента, используется его индекс:

System.out.println("The value of the first element is " + lotteryNumbers);

Как определяется длина массива Java? Чтобы узнать  длину массива, в Java используется поле length:

System.out.println("The lotteryNumbers array has " + lotteryNumbers.length + " elements");

Примечание: распространена ошибка при использовании метода length, когда значение length используется как индексная позиция. Это всегда выдаст ошибку, так как индексные позиции массива , в то время как позиция length – 1.

Download image

In the next example, we show how to download an image.

com/zetcode/DownloadImage.java

package com.zetcode;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;

public class DownloadImage {

    public static void main(String[] args) throws IOException {

        var imageUrl = "http://webcode.me/favicon.ico";
        var destinationFile = "favicon.ico";

        var url = new URL(imageUrl);

        try (var is = url.openStream();
             var fos = new FileOutputStream(destinationFile)) {

            byte[] buf = new byte;
            int noOfBytes;

            while ((noOfBytes = is.read(buf)) != -1) {

                fos.write(buf, 0, noOfBytes);
            }
        }
    }
}

The example downloads a small image.

byte[] buf = new byte;

An image is an array of bytes. We create an empty array of
values big enough to hold the icon.

while ((noOfBytes = is.read(buf)) != -1) {

    fos.write(buf, 0, noOfBytes);
}

We read the binary data and write it to the file.

In this part of the Java tutorial, we worked with arrays. We have described how
to initialize arrays, access array elements, traverse arrays, work with
multidimensional arrays, compare arrays and search for array elements.

Contents
Previous
Next

Нахождение минимального и максимального значения в массивах

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

Как находить минимальное значение в массиве:

int[] ints = {0,2,4,6,8,10};

int minVal = Integer.MAX_VALUE;

for(int i=0; i < ints.length; i++){
    if(ints < minVal){
        minVal = ints;
    }
}

System.out.println("minVal = " + minVal);

Вначале в примере для minVal устанавливается значение Integer.MAX_VALUE. Оно является максимально возможным значением, которое может принимать int. Это сделано для того, чтобы убедиться, что начальное значение не случайно меньше, чем наименьшее значение в массиве.

Во-вторых, пример перебирает массив и сравнивает каждое значение с minValue. Если элемент в массиве меньше minVal, тогда minVal устанавливается в значение элемента.

Наконец, минимальное значение, найденное в массиве, распечатывается. В приведенном выше примере минимальное значение равно 0.

Как найти максимальное значение:

int[] ints = {0,2,4,6,8,10};

int maxVal = Integer.MIN_VALUE;
for(int i=0; i < ints.length; i++){
    if(ints > maxVal){
        maxVal = ints;
    }
}
System.out.println("maxVal = " + maxVal);

В этом примере будет распечатано значение 10.

Основными отличиями в нахождении минимального значения являются инициализация maxVal и сравнение maxVal с элементами в массиве.

Сортировка по возрастанию: с помощью метода сортировки

Класс Arrays содержит статический метод, который автоматически сортирует элементы в порядке возрастания. Он сортирует элементы на основе двухкоординатная Quicksort алгоритм. Сложность этого метода составляет O (п журнал (п)). Мы можем сортировать элементы типа int, float, double, long, char и byte. Метод сортировки принимает в качестве параметра переменную массива.

public static void sort(int[] arrayName)

Теперь мы увидим пример того, как сортировать массив в Java с помощью метода sort (). Мы можем напрямую распечатать элементы массива с помощью метода Arrays.toString () и передать переменную массива в качестве параметра.

import java.util.Arrays;

public class SortArray {

  public static void main(String[] args) {
    int[] arrNum = {45,12,78,34,67,10,55,44};
    
    System.out.println("Arrays in original order: " + Arrays.toString(arrNum));
    
    Arrays.sort(arrNum);
    
    System.out.println("Sorted arrays in ascending order: " + Arrays.toString(arrNum));

  }

}
Arrays in original order: 
Sorted arrays in ascending order: 

Точно так же мы также можем сортировать значения float, double, long или char, используя метод.

import java.util.Arrays;

public class SortArray {

  public static void main(String[] args) {
    int[] arrNum = {45,12,78,34,67,10,55,44};
    char[] arrChar = {'v','d','a','r','j'};
    double[] arrDouble = {45.54,10.9,55.5,32.6,8.5};
    
    System.out.println("Arrays in original order: " + Arrays.toString(arrNum));
    System.out.println("Arrays in original order: " + Arrays.toString(arrChar));
    System.out.println("Arrays in original order: " + Arrays.toString(arrDouble));
    
    Arrays.sort(arrNum);
    Arrays.sort(arrChar);
    Arrays.sort(arrDouble);
    
    System.out.println("Sorted arrays in ascending order: " + Arrays.toString(arrNum));
    System.out.println("Sorted arrays in ascending order: " + Arrays.toString(arrChar));
    System.out.println("Sorted arrays in ascending order: " + Arrays.toString(arrDouble));

  }

}
Arrays in original order: 
Arrays in original order: 
Arrays in original order: 
Sorted arrays in ascending order: 
Sorted arrays in ascending order: 
Sorted arrays in ascending order: 

Примеры Java ArrayList

Создание ArrayList и добавление элементов и коллекции

Сначала мы создаем ArrayList в Java типа строка а затем добавьте элементы в список. Затем мы добавляем новый элемент в индекс 1. Таким образом, элемент, который ранее присутствовал в индексе 1, будет последовательно перемещаться вправо. Индекс в массиве всегда начинается с 0.

Затем мы создаем новый список из 2 элементов и добавляем всю коллекцию в список 1 с индексом 1.

import java.util.ArrayList;

public class ArrayListDemo {

  public static void main(String[] args) {
    //Create a String ArrayList
    ArrayList<String> al = new ArrayList<String>();
    
    //Add elements
    al.add("Java");
    al.add("JavaScript");
    al.add("PHP");

    System.out.println("Element in the list1:");
    System.out.println(al);
    
    //Add element at index 1
    al.add(1, "C");
    
    System.out.println("After adding element at index 1: ");
    System.out.println(al);
    
    //Create list2
    ArrayList<String> list = new ArrayList<String>();
    list.add("C++");
    list.add("Ruby");
    System.out.println("Elements in list2:");
    System.out.println(list);
    
    //Add list2 elements in list1
    al.addAll(1, list);
    System.out.println("Elements in List 1 after adding list2:");
    System.out.println(al);
    
  }

}

Output:
Element in the list1:

After adding element at index 1: 

Elements in list2:

Elements in List 1 after adding list2:

Изменение и удаление элемента из ArrayList

Ниже приведен пример программы для изменения массив list и удалите элемент из ArrayList в Java.

import java.util.ArrayList;
public class ArrayListDemo2 {

  public static void main(String[] args) {
    //Create an Integer ArrayList
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(4);
    numbers.add(8);
    numbers.add(2);
    
    System.out.println("Elements in the list are: ");
    System.out.println(numbers);
    
    //Modify element
    numbers.set(1, 6);
    
    System.out.println("After modifying an element at index 1:");
    System.out.println(numbers);
    
    //Remove an element
    numbers.remove(2);
    
    System.out.println("After removing an element at index 2:");
    System.out.println(numbers);
  }

}
Output:
Elements in the list are: 

After modifying an element at index 1:

After removing an element at index 2:

Другие полезные методы

В приведенном ниже примере показано использование методов contains (), indexOf () и keepAll (), которые являются частью ArrayList.

import java.util.ArrayList;
public class ArrayListDemo4 {

  public static void main(String[] args) {
    ArrayList<String> letters = new ArrayList<String>();
    letters.add("A");
    letters.add("G");
    letters.add("R");
    System.out.println(letters.contains("U"));
    int i = letters.indexOf("G");
    System.out.println("Index of G is " + i);
    
    ArrayList<String> c = new ArrayList<String>();
    c.add("F");
    c.add("E");
    c.add("T");
    c.add("P");
    letters.addAll(c);
    System.out.println("Elements in the list after using addAll:");
    System.out.println(letters);
    letters.retainAll(c);
    System.out.println("Elements in the list after using retainAll:");
    System.out.println(letters);


  }

}
Output:
false
Index of G is 1
Elements in the list after using addAll:

Elements in the list after using retainAll:

Очистить список ArrayList в java

В приведенном ниже примере четко показан результат использования методов isEmpty () и clear () в ArrayList. Используя метод clear (), мы можем очистить список ArrayList, удалив все элементы.

import java.util.ArrayList;
public class ArrayListDemo5 {

  public static void main(String[] args) {
    ArrayList<String> s = new ArrayList<String>();
    s.add("India");
    s.add("US");
    s.add("Germany");
    System.out.println("Contents in list:");
    System.out.println(s);
    System.out.println("Result of calling isEmpty(): " + s.isEmpty());
    s.clear();
    System.out.println("Contents in list after calling clear(): " + s);
    System.out.println("Result of calling isEmpty() after clear: " + s.isEmpty());
  }

}
Contents in list:

Result of calling isEmpty(): false
Contents in list after calling clear(): []
Result of calling isEmpty() after clear: true

sureCapacity ()

Этот метод гарантирует, что Java ArrayList может содержать минимальное количество элементов. Это можно использовать для динамически растущего размера массива.

import java.util.ArrayList;
public class ArrayListDemo6 {

  public static void main(String[] args) {
    ArrayList al = new ArrayList();
    al.add("Mango");
    al.add("Guava");
    al.add("Apple");
    al.ensureCapacity(3);
    System.out.println("Array list can store minimum of 3 elements");
    al.add("Orange");
    System.out.println(al);
  }

}
Output:
Array list can store minimum of 3 elements

Класс Массивов

Класс Arrays также предлагает несколько перегруженных методов для копирования массива в другой. Внутренне он использует тот же подход, что и класс System , который мы видели ранее. В основном он предоставляет два метода: копирование(…) и диапазон копирования(…) .

Давайте сначала взглянем на копию |:

int[] array = {23, 43, 55, 12};
int newLength = array.length;

int[] copiedArray = Arrays.copyOf(array, newLength);

Важно отметить, что Массивы класс использует Math.min(…) для выбора минимальной длины исходного массива и значения нового параметра длины для определения размера результирующего массива. Arrays.copyOfRange() принимает 2 параметра, ‘ from’ и ‘ to’ в дополнение к параметру исходного массива

Результирующий массив содержит индекс ‘ from’ , но индекс ‘to’ исключен. Давайте рассмотрим пример:

Arrays.copyOfRange() принимает 2 параметра, ‘ from’ и ‘ to’ в дополнение к параметру исходного массива. Результирующий массив содержит индекс ‘ from’ , но индекс ‘to’ исключен. Давайте рассмотрим пример:

int[] array = {23, 43, 55, 12, 65, 88, 92};

int[] copiedArray = Arrays.copyOfRange(array, 1, 4);
assertTrue(3 == copiedArray.length);
assertTrue(copiedArray == array);
assertTrue(copiedArray == array);
assertTrue(copiedArray == array);

Оба этих метода выполняют неглубокую копию объектов, если они применяются к массиву непримитивных типов объектов. Давайте рассмотрим пример тестового случая:

Employee[] copiedArray = Arrays.copyOf(employees, employees.length);

employees.setName(employees.getName() + "_Changed");
 
assertArrayEquals(copiedArray, array);

Поскольку результатом является неглубокая копия – изменение имени сотрудника элемента исходного массива вызвало изменение массива копирования.

И поэтому – если мы хотим сделать глубокую копию непримитивных типов-мы можем перейти к другим вариантам, описанным в следующих разделах.

Creating Arrays

You can create an array by using the new operator with the following syntax −

Syntax

arrayRefVar = new dataType;

The above statement does two things −

  • It creates an array using new dataType.

  • It assigns the reference of the newly created array to the variable arrayRefVar.

Declaring an array variable, creating an array, and assigning the reference of the array to the variable can be combined in one statement, as shown below −

dataType[] arrayRefVar = new dataType;

Alternatively you can create arrays as follows −

dataType[] arrayRefVar = {value0, value1, ..., valuek};

The array elements are accessed through the index. Array indices are 0-based; that is, they start from 0 to arrayRefVar.length-1.

Example

Following statement declares an array variable, myList, creates an array of 10 elements of double type and assigns its reference to myList −

double[] myList = new double;

Following picture represents array myList. Here, myList holds ten double values and the indices are from 0 to 9.

Declaring Array Variables

To use an array in a program, you must declare a variable to reference the array, and you must specify the type of array the variable can reference. Here is the syntax for declaring an array variable −

Syntax

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

Note − The style dataType[] arrayRefVar is preferred. The style dataType arrayRefVar[] comes from the C/C&plus;&plus; language and was adopted in Java to accommodate C/C&plus;&plus; programmers.

Example

The following code snippets are examples of this syntax −

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector