remove delete an element from an array java
別の配列の使用、Java 8ストリームの使用、ArrayListの使用など、Javaで配列から要素を削除または削除するさまざまな方法を学びます。
Java配列は、要素を削除するための直接のremoveメソッドを提供していません。実際、Javaの配列は静的であるため、インスタンス化された配列のサイズは変更できないことはすでに説明しました。したがって、要素を削除して配列サイズを小さくすることはできません。
したがって、配列から要素を削除または削除する場合は、通常は回避策となるさまざまな方法を採用する必要があります。
=> 初心者向けの完全なJavaトレーニングチュートリアルシリーズを参照してください
学習内容:
Javaで配列から要素を削除/削除する
このチュートリアルでは、配列から要素を削除するさまざまな方法について説明します。
含まれるもの:
- 別のアレイを使用する
- Java8ストリームの使用
- ArrayListの使用
- System.arraycopy()の使用
別のアレイの使用
これは、配列要素を削除する従来のやや非効率的な方法です。ここでは、元の配列に対して1未満のサイズの新しい配列を定義します。次に、要素を元の配列から新しい配列にコピーします。ただし、このコピーを実行している間、指定されたインデックスの要素をスキップします。
このようにして、削除する要素を除くすべての要素を新しい配列にコピーし、要素が削除されたことを示します。
以下に示すように、この操作を図で表すことができます。
このメソッドをJavaプログラムに実装してみましょう。
import java.util.Arrays; class Main { public static void main(String() args) { // define original array int() tensArray = { 10,20,30,40,50,60}; // Print the original array System.out.println('Original Array: ' + Arrays.toString(tensArray)); // the index at which the element in the array is to be removed int rm_index = 2; // display index System.out.println('Element to be removed at index: ' + rm_index); // if array is empty or index is out of bounds, removal is not possible if (tensArray == null || rm_index<0 || rm_index>= tensArray.length) { System.out.println('No removal operation can be performed!!'); } // Create a proxy array of size one less than original array int() proxyArray = new int(tensArray.length - 1); // copy all the elements in the original to proxy array except the one at index for (int i = 0, k = 0; i 出力:
DVDをハードドライブに無料でコピー
Java8ストリームの使用
ストリームは、バージョン8以降のJavaに新しく追加されたものです。 Java8ストリームを使用して、配列から要素を削除できます。これを行うために、最初に、配列がストリームに変換されます。次に、指定されたインデックスの要素が、ストリームのフィルターメソッドを使用して削除されます。
要素が削除されると、「map」メソッドと「toArray」メソッドを使用して、ストリームが配列に変換されます。
ストリームを使用して配列から要素を削除する実装を以下に示します。
import java.util.Arrays; import java.util.stream.IntStream; class Main { // Function to remove the element public static int() removeArrayElement(int() oddArray, int index) { //array is empty or index is beyond array bounds if (oddArray == null || index <0 || index>= oddArray.length) { return oddArray; } // delete the element at specified index and return the array return IntStream.range(0, oddArray.length) .filter(i -> i != index) .map(i ->oddArray(i)).toArray(); } public static void main(String() args) { int() oddArray = { 1, 3,5,7,9,11}; // define array of odd numbers System.out.println('Original Array: ' + Arrays.toString(oddArray)); // Print the resultant array int index = 2; // index at which element is to be removed System.out.println('Element to be removed at index: ' + index); // display index // function call removeArrayElement oddArray = removeArrayElement(oddArray, index); // Print the resultant array System.out.println('Array after deleting element: ' + Arrays.toString(oddArray)); } }
出力:
ArrayListの使用
ArrayListを使用してこの操作を実行できます。配列から要素を削除するには、最初に配列をArrayListに変換してから、ArrayListの「remove」メソッドを使用して特定のインデックスの要素を削除します。
削除したら、ArrayListを配列に変換し直します。
次の実装は、ArrayListを使用して配列から要素を削除する方法を示しています。
import java.util.*; import java.util.stream.*; class Main { public static int() remove_Element(int() myArray, int index) { if (myArray == null || index <0 || index>= myArray.length) { System.out.println('non-existing index'); return myArray; } //array to arrayList List arrayList = IntStream.of(myArray) .boxed().collect(Collectors.toList()); // Remove the specified element arrayList.remove(index); // return the resultant array returnarrayList.stream().mapToInt(Integer::intValue).toArray(); } public static void main(String() args) { int() myArray = { 11,22,33,44,55,66,77,88,99,111 }; System.out.println('Original Array: ' + Arrays.toString(myArray)); int index = 10; System.out.println('Index at which element is to be deleted: ' + index); myArray = remove_Element(myArray, index); System.out.println('Resultant Array: ' + Arrays.toString(myArray) + '
'); index = 2; System.out.println('Index at which element is to be deleted: ' + index); myArray = remove_Element(myArray, index); System.out.println('Resultant Array: ' + Arrays.toString(myArray)); } }
出力:
上記のプログラムは、2つの条件の出力を生成します。最初に、存在しないインデックス(10)が渡されます。つまり、現在の配列サイズを超えます。プログラムは適切なメッセージを表示し、要素を削除しません。
2番目のケースでは、インデックス= 2が渡されます。今回は、位置2の要素が削除され、結果の配列が渡されます。
System.arraycopyの使用()
このメソッドは、元の配列の要素を新しい配列にコピーするために「arrayCopy」メソッドを使用することを除いて、最初のメソッドに似ています。
まず、元の配列の要素を0からコピーして、新しい配列にインデックスを付けます。次に、要素をindex +1からlengthまで新しい配列にコピーします。したがって、コピー中に、指定されたインデックスの要素をスキップして、新しい配列を生成します。
この新しい配列は、指定されたインデックスの要素を削除した後に取得される結果の配列を示します。
import java.util.Arrays; class Main { public static void main(String() args) { // define the array of integers int() intArray = { 10,20,30,40,50 }; // display the original array System.out.println('Original Array: ' + Arrays.toString(intArray)); // index at which the element is to be deleted int index = 2; // the index System.out.println('Element to be deleted at index: ' + index); // check if the array is empty or index is out of bounds if (intArray == null || index <0 || index>= intArray.length) { System.out.println('No removal operation can be performed!!'); } // create an array to hold elements after deletion int() copyArray = new int(intArray.length - 1); // copy elements from original array from beginning till index into copyArray System.arraycopy(intArray, 0, copyArray, 0, index); // copy elements from original array from index+1 till end into copyArray System.arraycopy(intArray, index + 1, copyArray, index, intArray.length - index - 1); // display the copied array after deletion System.out.println('Array after deleting an element: ' + Arrays.toString(copyArray)); } }
出力:
よくある質問
Q#1)配列から1つの要素を削除するにはどうすればよいですか?
回答: Javaは、配列から要素を削除する直接的な方法を提供していません。ただし、要素が削除されるインデックスが与えられた場合、ArrayListを使用して、指定されたインデックスの要素を削除できます。
このために、最初に配列をArrayListに変換し、removeメソッドを使用して要素を削除します。それが完了したら、ArrayListを配列に変換し直します。この目的のために採用できる他のいくつかの回避策もあります。
Q#2)ArrayListの削除は何をしますか?
回答: ArrayList removeメソッドは、引数として指定された特定のインデックスにあるArrayListの要素を削除します。
デフォルトゲートウェイは利用できませんWindows7
Q#3)Javaの配列から重複を削除するにはどうすればよいですか?
回答: 配列から重複する要素は、要素を1つずつカウントし、一意の要素のみを一時配列に配置する一時配列を使用して削除できます。重複を削除するには、配列を並べ替える必要があります。
Q#4)Filterは新しい配列を返しますか?
回答: はい。フィルタは、元の配列に影響を与えることなく、新しい配列を返します。
Q#5)Rはどうですか Javaで作業を変更しますか?
回答: JavaのArrayListのremoveメソッドは、指定されたインデックスの要素を削除します。リンクリストでも、removeメソッドは指定された位置にあるノードを削除します。
結論
このチュートリアルでは、特定のインデックスの配列から要素を削除するためのさまざまな方法または回避策を見てきました。
以降のトピックでは、Javaの配列に対して実行されるいくつかの操作について説明します。
=> ここで集中Javaトレーニングガイドをチェックしてください
推奨読書