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, поскольку итерация по всем элементам по одному позволяет обрабатывать каждый из них соответствующим образом.

Этот метод помогает вам определить конкретные реализации для каждого элемента. Ниже приводится синтаксис цикла 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 будет слишком громоздким для использования.

Читайте также:  Eclipse IDE для Java

Метод 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
Добавить комментарий