В этой статье мы сделали подборку наиболее используемых методов для работы с массивами в Java. Разберем на примерах стандартные Java возможности и посмотрим в сторону библиотеки Apache Commons Lang.
Печать элементов массива
1 2 3 4 5 6 7 8 9 10 |
int[] simpleIntArray = { 2, 5, 3, 1, 4 }; String arrayString = Arrays.toString(intArray); // если явно указать simpleIntArray, то получим распечатанную ссылку System.out.println(simpleIntArray ); // [I@3250ac3b // указываем преобразованный в строку массив и получаем желаемый результат System.out.println(arrayString); // [2, 5, 3, 1, 4] |
Сортировка массива
Используем метод Arrays.sort()
и свою реализацию пузырьковой сортировки массива.
Создание ArrayList из массива
Простой способ создания коллекции ArrayList
из массива может содержать подводные камни. Подробнее о возможных проблемах читайте здесь.
1 2 3 4 5 |
String[] simpleStringArray = { "a", "d", "c" }; ArrayList<String> arrayList = new ArrayList<String>( Arrays.asList(simpleStringArray)); System.out.println(arrayList); // [a, d, c] |
Другой пример использования смотрите по ссылке.
Создание массива из ArrayList
Ниже представлен простой пример «на коленке», а по ссылке есть с объяснением.
1 2 3 4 5 6 7 8 |
String[] simpleStringArray = { "a", "c", "e" }; ArrayList<String> newArrayList = new ArrayList<String>( Arrays.asList(simpleStringArray)); String[] arrayOfStrings = new String[newArrayList.size()]; newArrayList.toArray(arrayOfStrings); for (String element : arrayOfStrings) { System.out.println(element); } |
Содержит ли массив указанный элемент
Используем прием с представлением массива в виде коллекции и вызовом привычного метода contains()
:
1 2 3 4 |
String[] simpleStringArray = { "a", "c", "e" }; boolean contains = Arrays.asList(simpleStringArray).contains("e"); // напечатает true System.out.println(contains); |
Копирование массива в Java
Используем методы копирования массива Arrays.copyOf()
, Arrays.copyOfRange()
, System.arraycopy()
и даже Object.clone()
. Вот еще примерчик.
Преобразование массива в Set
1 2 3 |
Set<String> simpleSet = new HashSet<String>(Arrays.asList(stringArray)); // получим в консоль вывод [c, b, a, d, e] System.out.println(simpleSet); |
Подробнее познакомиться с коллекцией Set
можно здесь, а узнать разницу между Set
и Set<?>
тут.
Преобразование int в массив byte
1 2 3 4 5 6 |
// создаем новый буфер байтов указанного размера byte[] mByteArray = ByteBuffer.allocate(4).putInt(8).array(); for (byte t : mByteArray ) { System.out.format("0x%x ", t); } |
Используем библиотеку Apache Commons Lang
Библиотека Apache Commons Lang представляет собой набор служебных классов для упрощения работы с классами пакета java.lang.*
. В нашем случае, мы воспользуемся доступными методами для работы с массивами.
Подключить эту библиотеку к своему приложению Вы можете с помощью зависимости для maven проектов:
1 2 3 4 5 6 |
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> |
Или же другим подходящим для Вас способом (смотрите по ссылке в коде выше).
Объединение (конкатенация) массива
1 2 3 4 |
int[] firstArray = { 1, 3, 5, 2 }; int[] secondArray = { 6, 8, 7 }; // используем специальный метод addAll() служебного класса ArrayUtils int[] newArray = ArrayUtils.addAll(firstArray, secondArray); |
Получение обратного массива
1 2 3 4 |
int[] simpleIntArray = { 2, 4, 6, 8, 10 }; ArrayUtils.reverse(simpleIntArray); // Получим на консоль [10, 8, 6, 4, 2] System.out.println(Arrays.toString(simpleIntArray)); |
Удаление элемента массива
1 2 3 4 |
int[] simpleIntArray = { 1, 2, 3, 4, 5 }; // создадим новый массив int[] newArray = ArrayUtils.removeElement(simpleIntArray , 3); System.out.println(Arrays.toString(newArray)); |
Нам этом моя подборка методов для работы с массивами в Java заканчивается. Если эта статья была Вам полезна и узнали что-то новое, то подписывайтесь на новые статьи по Java и Android!
А какие методы при работе с массивами Вы используете чаще всего?