JavaRush/Java блог/Архив info.javarush/10 часто используемых приёмов для работы с массивом в Jav...
theGrass
24 уровень

10 часто используемых приёмов для работы с массивом в Java

Статья из группы Архив info.javarush
участников
Следующие 10 приёмов для массивов в Java являются часто используемыми. Они имеют самый высокий рейтинг в Stack Overflow – системе вопросов и ответов о программировании. 10 часто используемых приёмов для работы с массивом в Java - 1
  1. Объявление массива

    String[] aArray = new String[5];
    String[] bArray = {"a","b","c", "d", "e"};
    String[] cArray = new String[]{"a","b","c","d","e"};
  2. Вывод массива в Java

    int[] intArray = { 1, 2, 3, 4, 5 };
    String intArrayString = Arrays.toString(intArray);
    
    // print directly will print reference value
    System.out.println(intArray);
    // [I@7150bd4d
    
    System.out.println(intArrayString);
    // [1, 2, 3, 4, 5]
  3. Создание ArrayList из массива

    String[] stringArray = { "a", "b", "c", "d", "e" };
    ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
    System.out.println(arrayList);
    // [a, b, c, d, e]
  4. Проверка массива на наличие конкретного значения

    String[] stringArray = { "a", "b", "c", "d", "e" };
    boolean b = Arrays.asList(stringArray).contains("a");
    System.out.println(b);
    // true
  5. Объединение двух массивов

    int[] intArray = { 1, 2, 3, 4, 5 };
    int[] intArray2 = { 6, 7, 8, 9, 10 };
    // Apache Commons Lang library
    int[] combinedIntArray = ArrayUtils.addAll(intArray, intArray2);
  6. Объявление массива в одной строке

    method(new String[]{"a", "b", "c", "d", "e"});
  7. Объединение элементов массива в строку

    // containing the provided list of elements
    // Apache common lang
    String j = StringUtils.join(new String[] { "a", "b", "c" }, ", ");
    System.out.println(j);
    // a, b, c
  8. Преобразование ArrayList в массив

    String[] stringArray = { "a", "b", "c", "d", "e" };
    ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
    String[] stringArr = new String[arrayList.size()];
    arrayList.toArray(stringArr);
    for (String s : stringArr)
    	System.out.println(s);
  9. Преобразование массива во множество (Set)

    Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
    System.out.println(set);
    //[d, e, b, c, a]
  10. Возврат массива с элементами в обратном порядке

    int[] intArray = { 1, 2, 3, 4, 5 };
    ArrayUtils.reverse(intArray);
    System.out.println(Arrays.toString(intArray));
    //[5, 4, 3, 2, 1]
  11. Удаление элемента из массива

    int[] intArray = { 1, 2, 3, 4, 5 };
    int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array
    System.out.println(Arrays.toString(removed));

    И еще — создание массива типа byte на основе значения типа int (прим. берем ByteBuffer, выделяем в нем 4 байта и кладем число int 8, затем все это (0, 0, 0, 8) преобразуем в массив типа byte с помощью вызова array())

    byte[] bytes = ByteBuffer.allocate(4).putInt(8).array();
    
    for (byte t : bytes) {
       System.out.format("0x%x ", t);
    }
Комментарии (22)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
3 мая 2022, 18:35
Спасибо. Поучительно.
Maksim
Уровень 19
21 января 2022, 21:17
Спасибо, очень полезная статья!
Maxim
Уровень 25
5 января 2022, 06:30
В п.1 я бы добавил пример для печати многомерных массивов с помощью метода Arrays.deepToString()
Anonymous #2775077
Уровень 16
1 октября 2021, 21:20
Вариант из массива в строку: String str = Arrays.toString(intArray).replaceAll(", |\\[|\\]", "");
BariO
Уровень 19
21 февраля 2020, 07:48
в 6м и 9м примерах можно обойтись стандартными средствами Java. В классе String так же есть метод join а в обратном порядке можно вывести при помощи Collections.reverse()
Павел Медведев
Уровень 35
19 октября 2019, 09:38
Данная статья должна называться "10 методов использование сторонней библиотеки "и должна быть дополнена информации как подключить библиотеку и риски в использование библиотек при написание проекта .
Ilya Prince
Уровень 1
21 сентября 2019, 20:39
Вывод массива в Java: int[] intArray = { 1, 2, 3, 4, 5 }; String intArrayString = Arrays.toString(intArray); System.out.println(intArrayString); // [1, 2, 3, 4, 5] --------------------------------------------------------------------------------------------------------------------- Спасибо, метод рабочий, но если массив 2хмерный то не работает) выводит значения типо: [I@7150bd4d если выводить вот так: System.out.println(peremenniemassiva[0][1] + " " + peremenniemassiva[4][1]); то работает, а System.out.println(intArrayString); нет ... (только в одномерных массивах работает) может кто подскажет что не так делаю?) вот мой код, вроде все правильно написал: int p [ ][ ] = { {1, 1}, {2, 4}, {3, 9}, {4, 16}, {5, 25}, {6, 36}, {7, 49}, {8, 64}, {9, 81}, {10, 100}, }; String intArrayString = Arrays.toString(p); System.out.println(intArrayString); // [[I@3feba861, [I@5b480cf9, [I@6f496d9f, [I@723279cf, [I@10f87f48, [I@b4c966a, [I@2f4d3709, и так далее
Anonymous #13 QA Automation Engineer
10 марта 2021, 21:52
для многомерных массивов используется deepToString() вместо toString().
Алексей
Уровень 13
8 августа 2019, 13:24
4 - ArrayUtils.addAll - сторонняя библиотека, без ее подключения IJ и валидатор Java Rush не пропустят решение задачи. 6 - StringUtils.join - аналогично 9 - ArrayUtils.reverse - аналогично 10 - ArrayUtils.removeElement - аналогично Круто было бы написать такую же статью, только со стандартными библиотеками :)
1kg Seleznya
Уровень 17
15 сентября 2019, 11:42
А в чем, собственно говоря, проблема подключить библиотеки? Методы, описанные в статье, нужно знать и уметь ими пользоваться. На одних for each и while далеко не уедешь.
Алексей
Уровень 13
19 сентября 2019, 07:17
Проблем нет, просто некоторые не сразу могут понять почему у них не работает данный метод. Можно было просто указать, что требуется подключить такую-то библиотеку, не все новички могут об этом знать.
Дмитрий
Уровень 2
Expert
7 марта 2019, 02:15
круто, спасибо
Vikentsi
Уровень 22
21 сентября 2017, 12:00
Не самый лучший способ здесь представлен для объединения массивов. В первую очередь потому, что нужно импортировать целую библиотеку. Что может оказаться накладным если вам из ее нужно единожды объединить массив.
Можно воспользоваться внутренними классами.
а именно class System со своим методам arraycopy().
Пример кода:
String [] arr1 = {"a", "b", "c"}; //объявляем 1 массив 
String [] arr2 = {"d", "e", "f"}; //объявляем 2 массив
String [] arr3 = new String[arr1.length + arr2.length]; //обьявляем 3 массив с длиной равной сумме двух предыдущих
System.arraycopy(arr1, 0, arr3, 0, arr1.length); //копируем 1 массив в третий
System.arraycopy(arr2, 0, arr3, arr1.length, arr2.length); //копируем 1 массив в третий
//выводим результат в консоль
for (String a : arr3) {
    System.out.print(a + " ");
}

ссылка на документацию
Андрей
Уровень 10
1 марта 2019, 12:22
Спасибо за подсказку, этим же способом разделил большой массив на 2 маленьких int[] big = new int[20]; int[] small1 = new int[10]; int[] small2 = new int[10]; System.arraycopy(big,0, small1,0, 10); System.arraycopy(big,10, small2,0, 10);