Как удалить элемент из массива java
Перейти к содержимому

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

  • автор:

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

Когда мы создаем массив в Java, мы указываем его тип данных и размер. Это используется JVM для выделения необходимой памяти для элементов массива. Не существует специальных методов удаления элементов из массива.

1. Удаление элемента из массива с помощью цикла for

Этот метод требует создания нового массива. Мы можем использовать цикл for для заполнения нового массива без элемента, который мы хотим удалить.

package com.journaldev.java; import java.util.Arrays; public class Main < public static void main(String[] args) < int[] arr = new int[]; int[] arr_new = new int[arr.length-1]; int j=3; for(int i=0, k=0;i > System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" + Arrays.toString(arr_new)); > > 

Код удаляет элемент с индексом 3. Этот метод просто копирует все элементы, кроме элемента с индексом 3, в новый массив.

2. Удаление элемента массива по его значению

В отличие от предыдущего случая, этот код удалит элемент на основе его значения. Это не будет работать с дубликатами, так как должен быть известен размер массива после удаления.

package com.journaldev.java; import java.util.Arrays; public class Main < public static void main(String[] args) < int[] arr = new int[]; int[] arr_new = new int[arr.length-1]; int j=3; for(int i=0, k=0;i > System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" + Arrays.toString(arr_new)); > > 

Единственная разница между этим и предыдущим случаем заключается в arr[i]!=j в условии if вместо i!=j .

3. Удаление элемента по его значению, когда массив содержит дубликаты

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

package com.journaldev.java; import java.util.ArrayList; import java.util.Arrays; public class Main < public static void main(String[] args) < int[] arr = new int[]; ArrayList arr_new = new ArrayList<>(); int j=3; for(int i=0;i > System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After deletion :" +arr_new); > > 

4. Сдвиг элементов в одном массиве

Этот метод включает в себя сдвиг элементов в одном и том же массиве. Сдвиг элементов заменяет элемент, подлежащий удалению, элементом со следующим индексом.

package com.journaldev.java; import java.util.Arrays; public class Main < public static void main(String[] args) < int[] arr = new int[]; int j=3; System.out.println("Before deletion :" + Arrays.toString(arr)); int count =0; for(int i = 0; i < arr.length; i++)< if(arr[i] == j)< count++; // shifting elements for(int k = i; k < arr.length - 1; k++)< arr[k] = arr[k+1]; >i--; // break; > > System.out.print("After Deletion :" ); for(int i = 0; i < arr.length-count; i++)< System.out.print(" " + arr[i]); >System.out.println(); System.out.println("Whole array :" + Arrays.toString(arr)); > > 

Переменная Count указывает количество удаленных элементов. Эта переменная необходима для отслеживания индекса, по которому должен быть напечатан массив. Этот метод также работает с дубликатами.

5. Удаление элементов из ArrayList

ArrayList поддерживается массивами. Удаление элемента в ArrayList выполняется прямолинейно. Для этого требуется один простой вызов встроенной функции.

package com.journaldev.java; import java.util.ArrayList; import java.util.Arrays; public class Main < public static void main(String[] args) < int[] arr = new int[]; ArrayList arr_new = new ArrayList(); for (int i : arr) < arr_new.add(i); >arr_new.remove(3); System.out.println("Before deletion :" + Arrays.toString(arr)); System.out.println("After Deletion:" + arr_new); > > 

Вызов функции remove(i) удаляет элемент с индексом i. Удаление в ArrayLists относительно проще по сравнению с массивами.

Заключение

Мы видели несколько примеров удаления элементов в массиве с использованием различных методов. Разница между удалением элемента в Array и ArrayList очевидна. Если удаление должно выполняться снова и снова, следует использовать ArrayList, чтобы извлечь выгоду из его встроенных функций. То же самое и с добавлением элементов в массив. ArrayList благодаря своей динамической природе предоставляет более простые и менее громоздкие способы изменения массива.

Все права защищены. © Linux-Console.net • 2019-2024

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

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

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

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

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

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

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

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

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

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

4.11. Java примеры – Как удалить элемент из массива

В следующем примере показано удаление из массива в Java.

import java.util.ArrayList; public class Main < public static void main(String[] args) < ArrayList objArray = new ArrayList(); objArray.clear(); objArray.add(0,"0-ой элемент"); objArray.add(1,"1-ый элемент"); objArray.add(2,"2-ой элемент"); System.out.println("Массив перед удалением элемента "+objArray); objArray.remove(1); objArray.remove("0-ой элемент"); System.out.println("Массив после удаления элемента "+objArray); >> 

Результат

Вышеприведенный пример кода даст следующий результат:

Массив перед удалением элемента [0-ой элемент, 1-ый элемент, 2-ой элемент] Массив после удаления элемента [2-ой элемент] 

Еще один пример как удалить значение из массива в Java.

import java.util.ArrayList; public class ArrayListDemo < public static void main(String[] args) < ArrayListarr = new ArrayList(5); arr.add(20); arr.add(15); arr.add(30); arr.add(45); System.out.println("Размер списка: " + arr.size()); for (Integer number : arr) < System.out.println("Число = " + number); >arr.remove(2); System.out.println("Теперь размер списка: " + arr.size()); for (Integer number : arr) < System.out.println("Число dos">Размер списка: 4 Число = 20 Число = 15 Число = 30 Число = 45 Теперь размер списка: 3 Число = 20 Число = 15 Число = 45 

Оглавление

  • 1. Java примеры – Использование кода на практике
  • 2. Java примеры – Окружающая среда
  • 2.1. Java примеры – Скомпилировать файл
  • 2.2. Java примеры – Установить путь к нескольким классам
  • 2.3. Java примеры – Отладка java-файла
  • 2.4. Java примеры – Установить путь к классу
  • 2.5. Java примеры – Просмотреть текущий путь класса
  • 2.6. Java примеры – Установить назначение файла класса
  • 2.7. Java примеры – Запустить скомпилированный java-файл класса
  • 2.8. Java примеры – Узнать версию Java
  • 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
  • 3. Java примеры – Строки
  • 3.1. Java примеры – Сравнить две строки
  • 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
  • 3.3. Java примеры – Удалить нужный символ из строки
  • 3.4. Java примеры – Заменить символ в строке
  • 3.5. Java примеры – Вывод в обратном порядке
  • 3.6. Java примеры – Нахождение символа или слова в строке
  • 3.7. Java примеры – Разбиение строки на слова и символы
  • 3.8. Java примеры – Преобразование строки в верхний регистр
  • 3.9. Java примеры – Найти слово в строке
  • 3.10. Java примеры – Сравнить производительность создания строки
  • 3.11. Java примеры – Оптимизировать создание строк
  • 3.12. Java примеры – Форматирование строк
  • 3.13. Java примеры – Конкатенация строк
  • 3.14. Java примеры – Определить код Юникода символа в строке
  • 3.15. Java примеры – Буферизация строк
  • 4. Java примеры – Массивы
  • 4.1. Java примеры – Сортировка массива и поиск элемента
  • 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
  • 4.3. Java примеры – Размер двумерного массива
  • 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
  • 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
  • 4.6. Java примеры – Найти максимальный и минимальный элемент массива
  • 4.7. Java примеры – Соединить два массива в один
  • 4.8. Java примеры – Как заполнить массив числами
  • 4.9. Java примеры – Увеличить массив после инициализации
  • 4.10. Java примеры – Сравнение двух массивов
  • 4.11. Java примеры – Удаление элемента из массива
  • 4.12. Java примеры – Удаление массива из другого массива
  • 4.13. Java примеры – Одинаковые элементы массивов
  • 4.14. Java примеры – Поиск в массиве
  • 4.15. Java примеры – Равенство двух массивов
  • 4.16. Java примеры – Сравнить массивы
  • 5. Java примеры – Дата и время
  • 5.1. Java примеры – Форматирование времени в формате AM-PM
  • 5.2. Java примеры – Получение названия и номера текущего месяца
  • 5.3. Java примеры – Получить текущее время в часах и минутах
  • 5.4. Java примеры – Вывести текущее время и дату
  • 5.5. Java примеры – Вывести текущее время в 24-часовом формате
  • 5.6. Java примеры – Получить текущий месяц
  • 5.7. Java примеры – Получить текущие секунды
  • 5.8. Java примеры – Получить короткое название месяца
  • 5.9. Java примеры – Получить день недели
  • 5.10. Java примеры – Добавление времени к дате
  • 5.11. Java примеры – Отображение времени в формате другой страны
  • 5.12. Java примеры – Отображение времени на разных языках
  • 5.13. Java примеры – Прокрутить часы и месяцы
  • 5.14. Java примеры – Получить номер недели и месяц в году
  • 5.15. Java примеры – Форматы текущей даты
  • 6. Java примеры – Методы
  • 6.1. Java примеры – Перезагрузка методов
  • 6.2. Java примеры – Вывод массива с использованием метода
  • 6.3. Java примеры – Решение Ханойской башни
  • 6.4. Java примеры – Последовательность чисел Фибоначчи
  • 6.5. Java примеры – Вычисление факториала числа
  • 6.6. Java примеры – Переопределение метода
  • 6.7. Java примеры – Вывод массива с использованием метода
  • 6.8. Java примеры – Использование оператора break
  • 6.9. Java примеры – Использование оператора continue
  • 6.10. Java примеры – Использование метки в методе
  • 6.11. Java примеры – Использование операторов enum и switch
  • 6.12. Java примеры – Использование конструктора enum

Удаление элемента из массива в 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. Заключение

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

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