HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В некоторых случаях возникает необходимость в удалении элементов из Java-массива. Однако язык программирования Java не предоставляет для выполнения этой операции прямого метода. Тем не менее ряд способов всё же имеется. О них и поговорим.</p>
1 <p>В некоторых случаях возникает необходимость в удалении элементов из Java-массива. Однако язык программирования Java не предоставляет для выполнения этой операции прямого метода. Тем не менее ряд способов всё же имеется. О них и поговорим.</p>
2 <p>Начнём с того, что в обычном массиве удаление осуществляется не очень удобно. То есть мы не можем просто взять и удалить ячейку из Java-массива. Зато можем обнулить значение этой ячейки.</p>
2 <p>Начнём с того, что в обычном массиве удаление осуществляется не очень удобно. То есть мы не можем просто взять и удалить ячейку из Java-массива. Зато можем обнулить значение этой ячейки.</p>
3 public class Cat { private String name; public Cat(String name) { this.name = name; } public static void main(String[] args) { Cat[] cats = new Cat[3]; cats[0] = new Cat("Том"); cats[1] = new Cat("Вася"); cats[2] = new Cat("Мурка"); cats[1] = null; System.out.println(Arrays.toString(cats)); } @Override public String toString() { return "Cat{" + "name='" + name + '\'' + '}'; } }<p>Вывод:</p>
3 public class Cat { private String name; public Cat(String name) { this.name = name; } public static void main(String[] args) { Cat[] cats = new Cat[3]; cats[0] = new Cat("Том"); cats[1] = new Cat("Вася"); cats[2] = new Cat("Мурка"); cats[1] = null; System.out.println(Arrays.toString(cats)); } @Override public String toString() { return "Cat{" + "name='" + name + '\'' + '}'; } }<p>Вывод:</p>
4 [Cat{name='Том'}, null, Cat{name='Мурка'}]<p>Итак, мы видим, что кот Вася благополучно обнулился. Однако при выполнении такой операции в Java-массиве остаётся "дыра", поскольку мы удаляем лишь содержимое ячейки, но не саму ячейку. То есть мы получаем пустую ячейку в середине массива, что не есть хорошо.</p>
4 [Cat{name='Том'}, null, Cat{name='Мурка'}]<p>Итак, мы видим, что кот Вася благополучно обнулился. Однако при выполнении такой операции в Java-массиве остаётся "дыра", поскольку мы удаляем лишь содержимое ячейки, но не саму ячейку. То есть мы получаем пустую ячейку в середине массива, что не есть хорошо.</p>
5 <p>Что тут можно сделать? Например, переместить эту ячейку в самый конец массива, сдвинув другие элементы к началу:</p>
5 <p>Что тут можно сделать? Например, переместить эту ячейку в самый конец массива, сдвинув другие элементы к началу:</p>
6 public static void main(String[] args) { Cat[] cats = new Cat[4]; cats[0] = new Cat("Том"); cats[1] = new Cat("Вася"); cats[2] = new Cat("Мурка"); cats[3] = new Cat("Барсик"); cats[1] = null; for (int i = 2; i &lt; cats.length-1; i++) { //выполняем перемещение элементов к началу, в результате чего пустая ячейка окажется в конце cats[i-1] = cats[i]; cats[i] = null; } System.out.println(Arrays.toString(cats)); }<p>Вывод:</p>
6 public static void main(String[] args) { Cat[] cats = new Cat[4]; cats[0] = new Cat("Том"); cats[1] = new Cat("Вася"); cats[2] = new Cat("Мурка"); cats[3] = new Cat("Барсик"); cats[1] = null; for (int i = 2; i &lt; cats.length-1; i++) { //выполняем перемещение элементов к началу, в результате чего пустая ячейка окажется в конце cats[i-1] = cats[i]; cats[i] = null; } System.out.println(Arrays.toString(cats)); }<p>Вывод:</p>
7 [Cat{name='Том'}, Cat{name='Мурка'}, Cat{name='Барсик'}, null]<p>Всё стало лучше, но, согласитесь, такое решение сложно назвать стабильным. Хотя бы потому, что каждый раз, когда нам надо будет удалить элемент из массива, нам придётся повторять вышеописанную операцию.</p>
7 [Cat{name='Том'}, Cat{name='Мурка'}, Cat{name='Барсик'}, null]<p>Всё стало лучше, но, согласитесь, такое решение сложно назвать стабильным. Хотя бы потому, что каждый раз, когда нам надо будет удалить элемент из массива, нам придётся повторять вышеописанную операцию.</p>
8 <h2>Использование ArrayList</h2>
8 <h2>Использование ArrayList</h2>
9 <p>Если гора не идёт к Магомету, Магомет идёт к горе. Если мы не можем удалить элемент в обычном массиве, мы можем преобразовать массив в структуру, позволяющую удалять элементы. А потом преобразовать эту структуру обратно в массив.</p>
9 <p>Если гора не идёт к Магомету, Магомет идёт к горе. Если мы не можем удалить элемент в обычном массиве, мы можем преобразовать массив в структуру, позволяющую удалять элементы. А потом преобразовать эту структуру обратно в массив.</p>
10 <p>Выполнить вышеописанную схему нам поможет java.util.List или ArrayList. Дело в том, что в ArrayList реализован специальный метод, позволяющий удалять элементы -<strong>remove</strong>. В общем виде всё выглядит так:</p>
10 <p>Выполнить вышеописанную схему нам поможет java.util.List или ArrayList. Дело в том, что в ArrayList реализован специальный метод, позволяющий удалять элементы -<strong>remove</strong>. В общем виде всё выглядит так:</p>
11 String[] array = new String[]{"foo", "bar", "baz"}; List&lt;String&gt; list = new ArrayList&lt;&gt;(Arrays.asList(array)); list.remove("foo"); // Creates a new array with the same size as the list and copies the list // elements to it. array = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(array)); //[bar, baz]<p>Давайте теперь рассмотрим работу метода remove на наших котах:</p>
11 String[] array = new String[]{"foo", "bar", "baz"}; List&lt;String&gt; list = new ArrayList&lt;&gt;(Arrays.asList(array)); list.remove("foo"); // Creates a new array with the same size as the list and copies the list // elements to it. array = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(array)); //[bar, baz]<p>Давайте теперь рассмотрим работу метода remove на наших котах:</p>
12 public static void main(String[] args) { ArrayList&lt;Cat&gt; cats = new ArrayList&lt;&gt;(); Cat tom = new Cat("Том"); Cat vasya = new Cat("Вася"); Cat murka = new Cat("Мурка"); Cat barsik = new Cat("Барсик"); cats.add(tom); cats.add(vasya); cats.add(murka); cats.add(barsik); System.out.println(cats.toString()); cats.remove(1); System.out.println(cats.toString()); }<p>Итак, мы передали в метод индекс нашего объекта, в результате чего он был удален.</p>
12 public static void main(String[] args) { ArrayList&lt;Cat&gt; cats = new ArrayList&lt;&gt;(); Cat tom = new Cat("Том"); Cat vasya = new Cat("Вася"); Cat murka = new Cat("Мурка"); Cat barsik = new Cat("Барсик"); cats.add(tom); cats.add(vasya); cats.add(murka); cats.add(barsik); System.out.println(cats.toString()); cats.remove(1); System.out.println(cats.toString()); }<p>Итак, мы передали в метод индекс нашего объекта, в результате чего он был удален.</p>
13 <p>Тут следует отметить следующие особенности метода remove(): - он не оставляет так называемых "дыр" - в нём реализована логика сдвига элементов, если мы удаляем элемент из середины. Вот вывод предыдущего кода:</p>
13 <p>Тут следует отметить следующие особенности метода remove(): - он не оставляет так называемых "дыр" - в нём реализована логика сдвига элементов, если мы удаляем элемент из середины. Вот вывод предыдущего кода:</p>
14 [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Мурка'}, Cat{name='Барсик'}] [Cat{name='Том'}, Cat{name='Мурка'}, Cat{name='Барсик'}]<p>То есть после удаления одного кота, остальные были передвинуты, и пробелов не осталось.</p>
14 [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Мурка'}, Cat{name='Барсик'}] [Cat{name='Том'}, Cat{name='Мурка'}, Cat{name='Барсик'}]<p>То есть после удаления одного кота, остальные были передвинуты, и пробелов не осталось.</p>
15 <p>Кроме того, remove способен удалять объект не только по индексу, но и по ссылке:</p>
15 <p>Кроме того, remove способен удалять объект не только по индексу, но и по ссылке:</p>
16 public static void main(String[] args) { ArrayList&lt;Cat&gt; cats = new ArrayList&lt;&gt;(); Cat tom = new Cat("Том"); Cat vasya = new Cat("Вася"); Cat murka = new Cat("Мурка"); Cat barsik = new Cat("Барсик"); cats.add(tom); cats.add(vasya); cats.add(murka); cats.add(barsik); System.out.println(cats.toString()); cats.remove(murka); System.out.println(cats.toString()); }<p>Вывод:</p>
16 public static void main(String[] args) { ArrayList&lt;Cat&gt; cats = new ArrayList&lt;&gt;(); Cat tom = new Cat("Том"); Cat vasya = new Cat("Вася"); Cat murka = new Cat("Мурка"); Cat barsik = new Cat("Барсик"); cats.add(tom); cats.add(vasya); cats.add(murka); cats.add(barsik); System.out.println(cats.toString()); cats.remove(murka); System.out.println(cats.toString()); }<p>Вывод:</p>
17 [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Мурка'}, Cat{name='Барсик'}] [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Барсик'}]<p>Однако на просторах сети можно найти и другие способы удаления нужных элементов из массива.</p>
17 [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Мурка'}, Cat{name='Барсик'}] [Cat{name='Том'}, Cat{name='Вася'}, Cat{name='Барсик'}]<p>Однако на просторах сети можно найти и другие способы удаления нужных элементов из массива.</p>
18 <h2>Используем System.arraycopy</h2>
18 <h2>Используем System.arraycopy</h2>
19 <p>Мы можем просто создать копию исходного массива с помощью System.arraycopy(), удалив таким нехитрым способом соответствующий элемент:</p>
19 <p>Мы можем просто создать копию исходного массива с помощью System.arraycopy(), удалив таким нехитрым способом соответствующий элемент:</p>
20 int[] array = new int[] { 1, 2, 3, 4 }; // Original array. int[] result = new int[array.length - 1]; // Array which will contain the result. int index = 1; // Remove the value "2". // Copy the elements at the left of the index. System.arraycopy(array, 0, result, 0, index); // Copy the elements at the right of the index. System.arraycopy(array, index + 1, result, index, array.length - index - 1); System.out.println(Arrays.toString(result)); //[1, 3, 4]<h2>Используем Apache Commons Lang</h2>
20 int[] array = new int[] { 1, 2, 3, 4 }; // Original array. int[] result = new int[array.length - 1]; // Array which will contain the result. int index = 1; // Remove the value "2". // Copy the elements at the left of the index. System.arraycopy(array, 0, result, 0, index); // Copy the elements at the right of the index. System.arraycopy(array, index + 1, result, index, array.length - index - 1); System.out.println(Arrays.toString(result)); //[1, 3, 4]<h2>Используем Apache Commons Lang</h2>
21 <p>Последний способ, о котором стоит упомянуть, - применение библиотеки<strong>Apache Commons Lang</strong>и статического метода removeElement() класса ArrayUtils:</p>
21 <p>Последний способ, о котором стоит упомянуть, - применение библиотеки<strong>Apache Commons Lang</strong>и статического метода removeElement() класса ArrayUtils:</p>
22 int[] array = new int[]{1,2,3,4}; array = ArrayUtils.removeElement(array, 2); //remove first occurrence of 2 System.out.println(Arrays.toString(array)); //[1, 3, 4]<p>Apache Commons предоставляет нам библиотеку с именем org.apache.commons.lang3. Добавить библиотеку в ваш проект можно с помощью следующей maven-зависимости:</p>
22 int[] array = new int[]{1,2,3,4}; array = ArrayUtils.removeElement(array, 2); //remove first occurrence of 2 System.out.println(Arrays.toString(array)); //[1, 3, 4]<p>Apache Commons предоставляет нам библиотеку с именем org.apache.commons.lang3. Добавить библиотеку в ваш проект можно с помощью следующей maven-зависимости:</p>
23 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.commons&lt;/groupId&gt; &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt; &lt;version&gt;3.0&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt;<p>Данный пакет предоставляет класс ArrayUtils. Используя метод remove() этого класса, можно удалять элементы. Рассмотрим это на примере удаления повторяющихся элементов в массиве Java. Для обнаружения дублей надо сравнить каждый элемент Java-массива с оставшимися, для чего можно использовать 2 вложенных цикла.</p>
23 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.commons&lt;/groupId&gt; &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt; &lt;version&gt;3.0&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt;<p>Данный пакет предоставляет класс ArrayUtils. Используя метод remove() этого класса, можно удалять элементы. Рассмотрим это на примере удаления повторяющихся элементов в массиве Java. Для обнаружения дублей надо сравнить каждый элемент Java-массива с оставшимися, для чего можно использовать 2 вложенных цикла.</p>
24 import java.util.Arrays; import java.util.Scanner; import org.apache.commons.lang3.ArrayUtils; public class DeleteDuplicate { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Enter the size of the array that is to be created::"); int size = sc.nextInt(); int[] myArray = new int[size]; System.out.println("Enter the elements of the array ::"); for(int i=0; i&lt;size; i++) { myArray[i] = sc.nextInt(); } System.out.println("The array created is ::"+Arrays.toString(myArray)); for(int i=0; i&lt;myArray.length-1; i++) { for (int j=i+1; j&lt;myArray.length; j++) { if(myArray[i] == myArray[j]) { myArray = ArrayUtils.remove(myArray, j); } } } System.out.println("Array after removing elements ::"+Arrays.toString(myArray)); } }<p>Вот, как это будет работать:</p>
24 import java.util.Arrays; import java.util.Scanner; import org.apache.commons.lang3.ArrayUtils; public class DeleteDuplicate { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Enter the size of the array that is to be created::"); int size = sc.nextInt(); int[] myArray = new int[size]; System.out.println("Enter the elements of the array ::"); for(int i=0; i&lt;size; i++) { myArray[i] = sc.nextInt(); } System.out.println("The array created is ::"+Arrays.toString(myArray)); for(int i=0; i&lt;myArray.length-1; i++) { for (int j=i+1; j&lt;myArray.length; j++) { if(myArray[i] == myArray[j]) { myArray = ArrayUtils.remove(myArray, j); } } } System.out.println("Array after removing elements ::"+Arrays.toString(myArray)); } }<p>Вот, как это будет работать:</p>
25 Enter the size of the array that is to be created :: 6 Enter the elements of the array :: 232 232 65 47 89 42 The array created is :: [232, 232, 65, 47, 89, 42] Array after removing elements :: [232, 65, 47, 89, 42]<p>На этом всё, надеемся, предоставленная информация была полезной!</p>
25 Enter the size of the array that is to be created :: 6 Enter the elements of the array :: 232 232 65 47 89 42 The array created is :: [232, 232, 65, 47, 89, 42] Array after removing elements :: [232, 65, 47, 89, 42]<p>На этом всё, надеемся, предоставленная информация была полезной!</p>
26 <p><em>Источники:</em>• "<a>Удаление элемента из списка ArrayList</a>"; • "<a>Java Language: удалить элемент из массива</a>"; • "<a>Удаление повторяющихся элементов массива в Java</a>".</p>
26 <p><em>Источники:</em>• "<a>Удаление элемента из списка ArrayList</a>"; • "<a>Java Language: удалить элемент из массива</a>"; • "<a>Удаление повторяющихся элементов массива в Java</a>".</p>
27 <p>Интересуют массивы в Java? Возможно, вам будут интересны следующие статьи: - "<a>Как скопировать массив в Java? Копирование массивов</a>"; - "<a>Массив объектов в Java. Как добавить объект в массив Java?</a>"; - "<a>Многомерные массивы в Java. Как преобразовать массив в ассоциативный?</a>"; - "<a>Перебор массива в Java. Основные способы перебора массива в Java на примерах</a>"; - "<a>Java-массивы. Динамические массивы в Java</a>".</p>
27 <p>Интересуют массивы в Java? Возможно, вам будут интересны следующие статьи: - "<a>Как скопировать массив в Java? Копирование массивов</a>"; - "<a>Массив объектов в Java. Как добавить объект в массив Java?</a>"; - "<a>Многомерные массивы в Java. Как преобразовать массив в ассоциативный?</a>"; - "<a>Перебор массива в Java. Основные способы перебора массива в Java на примерах</a>"; - "<a>Java-массивы. Динамические массивы в Java</a>".</p>
28  
28