Java массив строк цикл

Перебор массива в Java. Основные способы перебора массива в Java на примерах

Нередко Java-программисту необходимо реализовать обработку таких наборов данных, как массивы и коллекции. Чаще всего речь идёт о переборе всех значений массива. В этой статье мы поговорим, как это делать стандартным и расширенным способом. И приведём соответствующие примеры.

Чтобы выполнить перебор массива в Java, применяют один из операторов цикла: for, while, do…while. В большинстве случаев используют именно for:

int aNums[] = < 2, 4, 6 >; for (int i = 0; i

Так как это стандартная операция, разработчики ввели дополнительный формат, обеспечивающий более рациональную и упрощённую реализацию перебора элементов в массиве Java. Эту реализацию можно сравнить с использованием цикла foreach в иных языках программирования. Некоторые называют её формой расширенного цикла for:

 
for (type variable : collection) < // некоторые операторы // . >

Что тут у нас есть: • type – тип внутренней переменной, имеющий имя variable; • variable – внутренняя переменная type-типа, видимая в границах блока фигурных скобок. Она итерационна и сохраняет элементы из набора данных collection; • collection – набор данных, перебираемых в цикле поочерёдно. И вот как раз в качестве набора таких данных может выступать и массив, и коллекция.

Итак, в расширенном цикле for на Java осуществляется последовательный перебор всех элементов массива либо коллекции. При этом число итераций цикла равняется числу элементов в массиве. На каждой итерации значение какого-нибудь элемента массива попадает в итерационную переменную variable, которую вы можете обрабатывать либо использовать. А цикл гарантирует, что произойдёт перебор или прохождение по всему массиву, начиная с первого элемента, заканчивая последним.

Давайте посмотрим, как это выглядит на примере.

Перебор массива чисел в Java

Продемонстрируем расширенный цикл for при обработке одномерного массива чисел типа int. В нашем примере реализован подсчёт количества парных чисел Java-массива:

 
// инициализируем одномерный массив A int[] A = < 1, 8, 3, 6, 5, 10, 31 , 24, 10, 13, 2, 4 >; int k = 0; // число парных чисел // расширенный цикл for for (int d : A) if (d % 2 == 0) k++; // k = 7

Перебор массива объектов в Java

Представьте, что у нас есть класс Book, реализующий книгу:

Давайте выполним перебор этого массива объектов, используя расширенный цикл for:

 
// объявляем одномерный массив типа Book Book B[]; // выделяем память для массива из четырёх ссылок на тип Book B = new Book[4]; // выделяем память для каждого элемента нашего массива for (int i=0; i

Результат перебора этого массива объектов в Java будет следующим:

 
Book: Book-3, Author-3 Book: Book-4, Author-4

Перебор коллекции в Java

Также для примера продемонстрируем, как происходит обработка коллекции типа Integer посредством ArrayList. Как известно, класс нам ArrayList нам нужен для реализации динамического массива, способного увеличиваться либо уменьшаться по мере необходимости. Для использования этого класса следует подключить пакет java.util. Объявление класса ArrayList выглядит следующим образом:

Здесь E – это тип объектов, сохраняемых в массиве. Класс Integer является классом-оберткой над типом int и представляет целочисленные значения. В нашем примере класс ArrayList, обрабатывающий объекты типа Integer, имеет следующий вид:

Теперь давайте посмотрим на использование расширенного цикла for (одна из возможных реализаций):

 
// подключаем пакет java.util import java.util.*; . ArrayList A = new ArrayList(); // создаём коллекцию // добавляем элементы в коллекцию A.add(5); A.add(9); A.add(-20); A.add(11); A.add(7); // A = < 5, 9, -20, 11, 7 >// находим сумму элементов коллекции int sum = 0; for (Integer i : A) // расширенный цикл for sum += i; System.out.println("Sum = " + sum); // Sum = 12

Плюсы и минусы расширенного цикла for для Java-массивов

Применение расширенного цикла for имеет ряд преимуществ: • повышенная рациональность и упрощённость, если сравнивать со стандартным использованием цикла for; • отпадает необходимость в применении дополнительной переменной цикла, не надо задавать её начальное значение, как и условие завершения цикла; • массив индексировать тоже не нужно; • такой цикл очень удобен при обработке коллекций.

Но есть и недостаток, который связан с тем, что у нас отсутствует доступ к индексу массива. В результате у нас снижается гибкость в оперировании итерационной переменной. А это иногда нужно, допустим, если надо выполнить перебор не всех элементов массива или коллекции. К примеру, в некоторых случаях у программистов возникают задачи по перебору лишь первых n-элементов либо элементов, лежащих на определённых позициях (четных или нечётных). Правда, данный недостаток мы можем обойти, если введём дополнительные переменные-итераторы и проверку соответствующих условий. Тем не менее лучше всего этот способ подходит именно для обычного перебора всех элементов массива в Java.

Хотите знать больше? Приходите на профессиональный курс по Java-программированию в OTUS!

Источник

Java String Array

Java String Array

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

  • Java String array is basically an array of objects.
  • There are two ways to declare string array - declaration without size and declare with size.
  • There are two ways to initialize string array - at the time of declaration, populating values after declaration.
  • We can do different kind of processing on string array such as iteration, sorting, searching etc.

Let’s go over java string array example programs now.

Java String Array Declaration

Below code snippet shows different ways for string array declaration in java.

String[] strArray; //declare without size String[] strArray1 = new String[3]; //declare with size 

Note that we can also write string array as String strArray[] but above shows way is the standard and recommended way. Also in the above code, strArray is null whereas strArray1 value is [null, null, null] .

Java String Array Initialization

Let’s look at different ways to initialize string array in java.

//inline initialization String[] strArray1 = new String[] ; String[] strArray2 = ; //initialization after declaration String[] strArray3 = new String[3]; strArray3[0] = "A"; strArray3[1] = "B"; strArray3[2] = "C"; 

All the three string arrays will have same values. However if you will call equals method on them, it will return false.

System.out.println(strArray1.equals(strArray2)); // false System.out.println(Arrays.toString(strArray1).equals(Arrays.toString(strArray2)));// true 

The reason is that array are Objects and Object class implements equals() method like below.

public boolean equals(Object obj)

Second statement is true because when converted to String, their values are same and String class equals() method implementation check for values. For more details, please check String class API documentation.

Iterating over java string array

We can iterate over string array using java for loop or java foreach loop.

String[] strArray2 = ; for (int i = 0; i < strArray2.length; i++) < System.out.print(strArray2[i]); >for (String str : strArray2)

Search for a String in the String array

We can use for loop to search for an string in the array, below is a simple example for that.

package com.journaldev.stringarray; public class JavaStringArrayExample < public static void main(String[] args) < String[] strArray = < "A", "B", "C" >; boolean found = false; int index = 0; String s = "B"; for (int i = 0; i < strArray.length; i++) < if(s.equals(strArray[i])) < index = i; found = true; break; >> if(found) System.out.println(s +" found at index "+index); else System.out.println(s +" not found in the array"); > > 

Notice the use of break keyword to get out of the loop as soon as we found the string.

Java String Array Sorting

We can implement our own sorting algorithm, or we can use Arrays class sorting method.

String[] vowels = ; System.out.println("Before sorting "+Arrays.toString(vowels)); Arrays.sort(vowels); System.out.println("After sorting "+Arrays.toString(vowels)); 

Output of above code snippet will be:

Before sorting [a, i, u, e, o] After sorting [a, e, i, o, u] 

Note that String implements Comparable interface, so it works for natural sorting. Incase you want to sort by some other way, you can use Arrays.sort() overloaded method by passing a Comparator. Learn about these sorting techniques at Comparable and Comparator in java.

Convert String to String Array

We can convert String to string array using it’s split() method. It’s useful when you get a single string as input with values separated using delimiter character.

String str = "a,e,i,o,u"; String[] vowels = str.split(","); System.out.println(Arrays.toString(vowels)); //[a, e, i, o, u] 

Convert String Array to String

We can use Arrays.toString() method to convert String array to String. Note that array doesn’t implement toString() method, so if you will try to get it’s string representation then you will have to rely on Arrays class, or else write your own custom code.

String[] vowels = < "a", "e", "i", "o", "u" >; System.out.println(vowels); System.out.println(Arrays.toString(vowels)); 

Output will be like below.

[Ljava.lang.String;@3d04a311 [a, e, i, o, u] 

The first output is because of Object class toString() implementation like below.

Java String Array to List

We can get a list representation of string array using Arrays.toList() method. Note that this list is backed by the array and any structural modification will result in java.lang.UnsupportedOperationException .

String[] vowels = < "a", "e", "i", "o", "u", "a", "o" >; List vowelsList = Arrays.asList(vowels); System.out.println("vowelsList = "+vowelsList); //vowelsList.add("x"); //java.lang.UnsupportedOperationException vowelsList.set(0, "x"); //allowed because no structural modification System.out.println("vowelsList = "+vowelsList); 

That’s all for java string array. Reference: Arrays Oracle Documentation

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Источник

Читайте также:  Instance variables python classes
Оцените статью