배열에서 요소를 제거한 다음 Java에서 다른 요소를 이동

Rupam Yadav 2023년10월12일
  1. for루프를 사용하여 Java에서 배열 및 시프트에서 요소 제거
  2. System.arraycopy()를 사용하여 Java에서 배열 및 시프트에서 요소 제거
  3. ArrayList를 사용하여 Java에서 배열 및 시프트에서 요소 제거
배열에서 요소를 제거한 다음 Java에서 다른 요소를 이동

Java의 배열은 동일한 유형의 고정 크기 요소 모음입니다. Java는 배열과 관련된 다양한 조작을 수행하는 다양한 방법을 제공합니다.

for루프를 사용하여 Java에서 배열 및 시프트에서 요소 제거

이 접근 방식에서는 여러 개의for루프를 사용하여arr의 모든 요소를 ​​반복하고 제거 할 요소를 확인합니다. 삭제할 요소를 찾으면arr.length-1크기의 새 배열newArr를 만듭니다. elementToBeDeleted가있는 색인 앞의 모든 요소를 ​​복사하기 위해 또 다른 루프를 실행합니다.

그런 다음elementToBeDeleted뒤에 배열의 나머지 요소를 복사하기 위해 또 다른 루프를 실행하고 삭제해야하는 요소는 남겨 둡니다.

import java.util.Arrays;

public class Test {
  public static void main(String[] args) {
    int[] arr = {3, 1, 6, 5, 2, 8, 4};
    int[] newArr = null;
    int elementToBeDeleted = 5;
    System.out.println("Original Array is: " + Arrays.toString(arr));

    for (int i = 0; i < arr.length - 1; i++) {
      if (arr[i] == elementToBeDeleted) {
        newArr = new int[arr.length - 1];
        for (int index = 0; index < i; index++) {
          newArr[index] = arr[index];
        }
        for (int j = i; j < arr.length - 1; j++) {
          newArr[j] = arr[j + 1];
        }
        break;
      }
    }
    System.out.println("New Array after deleting element = " + elementToBeDeleted
        + " and shifting: " + Arrays.toString(newArr));
  }
}

출력:

Original Array is: [3, 1, 6, 5, 2, 8, 4]
New Array after deleting element = 5 and shifting: [3, 1, 6, 2, 8, 4]

System.arraycopy()를 사용하여 Java에서 배열 및 시프트에서 요소 제거

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)는 지정된 길이까지 소스 위치에서 대상 위치로 복사 작업을 시작하여 소스 배열을 대상 배열로 복사합니다.

여기에서 소스 배열arr를 두 개의System.copy()메소드를 실행하는removeElement메소드에 전달합니다. 하나의 요소가 삭제되면arr길이보다 길이가 1 인arrDestination을 생성합니다.

먼저arr에서 6을 삭제해야하므로 색인2앞의 요소를 복사합니다. 다음으로, 삭제하려는 요소의 색인 뒤에 존재하는 나머지 요소를 가져옵니다.

import java.util.Arrays;
public class Test {
  public static void main(String[] args) {
    int[] arr = {3, 1, 6, 5, 2, 8, 4};
    removeElement(arr, 2);
  }
  public static void removeElement(int[] arr, int index) {
    int[] arrDestination = new int[arr.length - 1];
    int remainingElements = arr.length - (index + 1);
    System.arraycopy(arr, 0, arrDestination, 0, index);
    System.arraycopy(arr, index + 1, arrDestination, index, remainingElements);
    System.out.println("Elements -- " + Arrays.toString(arrDestination));
  }
}

출력:

Elements -- [3, 1, 5, 2, 8, 4]

ArrayList를 사용하여 Java에서 배열 및 시프트에서 요소 제거

ArrayArrayList로 변환하여 배열에서 요소를 제거 할 수 있으며 셔플 링은ArrayList자체에서 처리됩니다.

아래 코드에서Integer객체 배열arr를 생성합니다. 그런 다음 삭제할 요소의 배열과 인덱스를removeElementUsingCollection메소드에 전달합니다.이 메소드는 배열을 조작하고 객체 배열을 반환합니다.

전달 된 배열은 ArrayList tempList로 변환되고remove()메서드를 호출하면 지정된 인덱스의 요소가 목록에서 제거됩니다. 배열로 다시 변환 된 목록을 반환합니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
  public static void main(String[] args) {
    Integer[] arr = {3, 1, 6, 5, 2, 8, 4};
    int elementToBeDeleted = 2;

    System.out.println("Original Array " + Arrays.toString(arr));
    for (int i = 0; i < arr.length; i++) {
      if (arr[i] == elementToBeDeleted) {
        arr = removeElementUsingCollection(arr, i);
        break;
      }
    }
    System.out.println("Array after removing element : " + elementToBeDeleted + " -- ");
    for (int i = 0; i < arr.length; i++) {
      System.out.print(" " + arr[i]);
    }
  }

  public static Integer[] removeElementUsingCollection(Integer[] arr, int index) {
    List<Integer> tempList = new ArrayList<Integer>(Arrays.asList(arr));
    tempList.remove(index);
    return tempList.toArray(new Integer[0]);
  }
}

출력:

Original Array [3, 1, 6, 5, 2, 8, 4]
Array after removing element : 2 -- 
 3 1 6 5 8 4
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Array