Java ArrayList: полное руководство

Java ArrayList Программирование и разработка

Java ArrayList

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

Благодаря длинному списку преимуществ у ArrayLists есть приложения во множестве случаев. Однако важная операция, которая не встроена в ArrayLists, — это печать. Списки ArrayLists могут состоять из стандартных примитивных типов данных (например, целых чисел и строк) или из более сложных типов данных, таких как настраиваемые классы. В каждом из этих случаев для печати списка ArrayList требуются разные шаги.

В этой статье мы рассмотрим три основных способа печати ArrayList в Java, охватывающие два типа ArrayList, которые мы обсуждали выше. Без лишних слов, приступим!

Java ArrayList: три способа

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

Это три основных способа распечатать список ArrayList в Java:

  • Использование цикла for.
  • Использование команды println.
  • А также использование ToString () реализация.

Метод 1. Использование цикла for

Цикл for — это один из простейших способов перебора списка или массива. Этот метод хорошо работает как с простыми массивами, так и со списками ArrayList, поскольку итерация по всем элементам по одному позволяет обрабатывать каждый из них соответствующим образом.

Читайте также:  Начало работы с Notion API и его SDK для JavaScript

Этот метод помогает вам определить конкретные реализации для каждого элемента. Ниже приводится синтаксис цикла for:

for (int i=0; i<arr.size(); i++) {
// Assuming arr is an ArrayList object
int current = arr.get(i);

// Do something with the current element here
}

Теперь давайте рассмотрим некоторые из распространённых способов использования цикла for для обхода массива объектов:

Примеры

Вы можете использовать цикл for, чтобы просто распечатать все элементы ArrayList:

ArrayList<Integer> arr = new ArrayList<>();

arr.add(3);
arr.add(4);
arr.add(5);
arr.add(6);

for (int i=0; i<arr.size(); i++) {
int curr = arr.get(i);

System.out.println(curr);
}

Чтобы поднять этот уровень, вы можете определить конкретные случаи для каждого элемента на основе любых условий:

ArrayList arr = new ArrayList<>();

arr.add(3);
arr.add(5l);
arr.add(«Hello World!»);

for (int i=0; i<arr.size(); i++) {
if (arr.get(i) instanceof Integer)
System.out.println(arr.get(i) + » is a number»);
else if (arr.get(i) instanceof String)
System.out.println(arr.get(i) + » is a string»);
else if (arr.get(i) instanceof Long)
System.out.println(arr.get(i) + » is a long»);
}

Когда использовать этот метод

Цикл for лучше всего подходит для ситуаций, когда у вас относительно более короткий набор элементов, а их типы не сильно различаются. Если у вас есть список из 20 элементов, которые являются целыми числами (int) или строками, цикл for — это то, что вам нужно. Если у вас есть список из более чем 100 элементов, которые могут быть строковыми, int, логическими или чем-либо ещё, цикл for будет слишком громоздким для использования.

Метод 2: использование команды println

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

Синтаксис этого метода прост:

System.out.println(arr);
// Assuming arr is an ArrayList object

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

println Примеры

Если вы пытаетесь напечатать простой целочисленный ArrayList, вот как вы это сделаете:

ArrayList<Integer> arr = new ArrayList<>();

arr.add(5);
arr.add(4);
arr.add(6);

System.out.println(arr);
# => [5, 4, 6]

Если вы пытаетесь напечатать разнородный ArrayList, это тоже сработает:

ArrayList<> arr = new ArrayList<>();

arr.add(7);
arr.add(«Foo»);
arr.add(12l);

System.out.println(arr);
# => [7, Foo, 12]

Когда использовать этот метод

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

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

class Foo {
int bar;

public Foo(int bar){ this.bar = bar; };
}

ArrayList<> arr = new ArrayList<>();

arr.add(4);
arr.add(new Foo(40));

System.out.println(arr);
# => [4, 34n2dsf@Foo];

Метод 3: реализация метода toString ()

Этот метод лишён недостатков предыдущего. Причина, по которой непримитивные объекты не могут быть напечатаны на выходе напрямую, заключается в том, что компилятор не знает, как их распечатать. Метод toString () позволяет указать компилятору, как выводить объекты класса в командную строку.

Возьмём класс Foo из последнего примера:

class Foo {
int bar;

public Foo(int bar){ this.bar = bar; };
}

Чтобы сделать это удобным для печати, вам нужно переопределить и определить метод toString () в определении класса:

class Foo {
int bar;

public Foo(int bar){ this.bar = bar; };

public String toString() {
return «Bar: » + String.valueOf(bar);
}
}

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

Foo foo = new foo(20);

И распечатайте:

System.out.println(foo);

Вы получите результат, который вы определили ранее:

// # => Bar: 20

Это небольшое исправление можно сочетать с методом println, чтобы легко и быстро распечатать все виды ArrayLists.

toString () Примеры

Возьмём последний пример из метода 2 и сделаем его удобным для печати:

class Foo {
int bar;

public Foo(int bar){ this.bar = bar; };
}

ArrayList<> arr = new ArrayList<>();

arr.add(4);
arr.add(new Foo(40));

System.out.println(arr);
# => [4, Foo@2a139a55];

Единственное изменение, которое вам здесь нужно сделать, — это добавить определение toString () в класс Foo:

class Foo {
int bar;

public Foo(int bar){ this.bar = bar; };

public String toString(){
return «Value: » + String.valueOf(bar);
}
}

Now, the println statement will give the desired output:

// # => [4, Value: 40]

Когда использовать этот метод

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

Однако в более простых ситуациях этот метод может показаться излишним. Если у вас небольшой список элементов, вы можете рассмотреть возможность использования метода цикла for для простоты и простоты логики.

Вывод

Печать Java ArrayList — непростая задача. Чем динамичнее содержимое ArrayList, тем сложнее вывести список на стандартный вывод. Команда printlnподходит для большинства случаев, но вам также может потребоваться toString()переопределение для выполнения работы.

В этой статье мы рассмотрели три способа печати ArrayList. Мы рассмотрели их синтаксис, примеры и ситуации, для которых они подходят лучше всего.е всего.

Оцените статью
bestprogrammer.ru
Добавить комментарий