Перейти к содержимому

Как удалить элемент из массива java

  • автор:

Как удалить элемент массива Java?

Есть массив в Java, надо удалить элемент (ячейку) из него.

  • Вопрос задан более трёх лет назад
  • 34299 просмотров

Комментировать

Решения вопроса 1

Ячейку вы никак не удалите. Можно только занулить значение. Если вам нужны динамические массивы (массивы переменной длины), то вам нужны коллекции, а именно ArrayList (либо, если вам важна потокобезопасность — Vector).

Почитать об этом можно здесь: habrahabr.ru/post/128269

Ответ написан более трёх лет назад

Комментировать

Нравится 3 Комментировать

Удаление элементов массива — Java: Массивы

В Java не существует простого способа удалить элемент из массива. Изменение массива трансформируется в создание нового массива, в котором отсутствуют удаляемые элементы. Ниже пример реализации метода remove() , который удаляет элемент по определенному индексу:

import java.util.Arrays; class MyArrayUtils  public static int[] remove(int[] values, int index)  // Создаем пустой массив размером на один меньше чем исходный // так как мы удаляем один элемент var result = new int[values.length - 1]; for (var i = 0; i  values.length; i++)  if (i != index)  // Копируем все кроме index // Элементы стоящие дальше index смещаются влево var newIndex = i  index ? i : i - 1; result[newIndex] = values[i]; > > return result; > > int[] numbers = 1, 5, 8, 100>; System.out.println(Arrays.toString(MyArrayUtils.remove(numbers, 2))); // => [1, 5, 100] // Исходный массив не поменялся System.out.println(Arrays.toString(numbers)); // => [1, 5, 8, 100] System.out.println(Arrays.toString(MyArrayUtils.remove(numbers, 0))); // => [5, 8, 100] 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Удаление элемента из массива в Java

Давайте добавим зависимость commons-lang3 в файл pom.xml нашего проекта :

 dependency>   groupId>org.apache.commonsgroupId>   artifactId>commons-lang3artifactId>   version>3.12.0version>   dependency> 

3. Удаление элемента​

Прежде чем мы начнем, давайте посмотрим, что происходит, когда мы удаляем элемент из массива без использования класса ArrayUtils из библиотеки Apache Commons Lang.

Учитывая приведенный ниже массив, давайте удалим элемент с индексом 2 :

Простым способом сделать это было бы заменить значение, хранящееся в индексе 2 , значением, хранящимся в индексе 3 , пока мы не достигнем конца массива:

./505b642c00a499e9f733cf6f075ff549.png

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

Теперь давайте посмотрим на представление массива при удалении элемента с помощью метода удаления из класса ArrayUtils из Apache Commons Lang:

./43e5686bfdeecd567b01d97e743620fa.png

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

Класс ArrayUtils предоставляет два способа удаления элемента из массива. Давайте посмотрим на это дальше.

4. Использование индекса в качестве входных данных​

Первый способ удалить элемент — по его индексу с помощью ArrayUtils#remove :

 public int[] removeAnElementWithAGivenIndex(int[] array, int index)    return ArrayUtils.remove(array, index);   > 

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

 public int[] removeAllElementsWithGivenIndices(int[] array, int... indices)    return ArrayUtils.removeAll(array, indices);   > 

5. Использование элемента в качестве входных данных​

Или, скажем, мы не знаем индекс того, что мы удаляем. В этом случае мы можем предоставить элемент для удаления с помощью ArrayUtils#removeElement :

 public int[] removeFirstOccurrenceOfGivenElement(int[] array, int element)    return ArrayUtils.removeElement(array, element);   > 

Вот еще одна полезная вариация этого метода ArrayUtils#removeElements на случай, если мы хотим удалить более одного элемента:

 public int[] removeAllGivenElements(int[] array, int... elements)    return ArrayUtils.removeElements(array, elements);   > 

Иногда мы хотели бы удалить все вхождения данного элемента. Мы можем сделать это с помощью ArrayUtils#removeAllOccurences :

 public int[] removeAllOccurrencesOfAGivenElement(int[] array, int element)    return ArrayUtils.removeAllOccurences(array, element);   > 

6. Заключение​

В этой статье мы рассмотрели различные способы удаления элемента/элементов из массива с помощью библиотеки Apache Commons Lang .

Чтобы узнать больше о пограничных случаях, ознакомьтесь с исходным кодом этого руководства и соответствующими модульными тестами, доступными на GitHub .

  • 1. Обзор
  • 2. Мавен
  • 3. Удаление элемента
  • 4. Использование индекса в качестве входных данных
  • 5. Использование элемента в качестве входных данных
  • 6. Заключение

Как удалить элемент из массива java

В Java массив имеет фиксированный размер и простого способа удалить элемент из массива не существует. Удаление элемента сводится к формированию нового массива на основе старого, в которм будет отсутствовать удаляемый элемент. Ниже пример реализации метода remove(), который удаляет элемент по определенному индексу:

import java.util.Arrays; class MyArrayUtils  public static int[] remove(int[] values, int index)  // Создаем пустой массив размером на один меньше чем исходный // так как мы удаляем один элемент var result = new int[values.length - 1]; for (var i = 0; i  values.length; i++)  if (i != index)  // Копируем все кроме index // Элементы стоящие дальше index смещаются влево var newIndex = i  index ? i : i - 1; result[newIndex] = values[i]; > > return result; > > int[] numbers = 1, 5, 8, 100>; System.out.println(Arrays.toString(MyArrayUtils.remove(numbers, 2))); // => [1, 5, 100] // Исходный массив не поменялся System.out.println(Arrays.toString(numbers)); // => [1, 5, 8, 100] 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *