1. 목록 중간(또는 시작 부분)에 요소 추가

목록 중간에 요소를 삽입하려는 경우 목록 내부에서 발생하는 작업은 다음과 같습니다.

11개의 요소 목록이 있다고 가정합니다.

목록 중간(또는 시작 부분)에 요소 추가

인덱스 5의 목록에 숫자 10,000을 삽입하려고 합니다. 이렇게 하려면 다음을 실행하기만 하면 됩니다.

list.add(5, 10000);

변수는 어디에 list있습니까 ArrayList? 이 add(int index, type value)메서드는 목록의 위치 5에 값 10000을 추가합니다. 메서드 에서 발생하는 작업은 다음과 같습니다 add().

1단계: 5번째 위치부터 시작하여 배열의 모든 요소가 배열의 끝을 향해 1개 요소만큼 이동(복사)됩니다.

목록 1의 중간(또는 시작 부분)에 요소 추가

배열의 5번째 및 6번째 셀에 있는 요소는 이제 동일합니다.

2단계: 값 10,000을 다섯 번째 셀에 씁니다.

목록 2의 중간(또는 시작 부분)에 요소 추가

이제 목록에는 배열의 모든 요소가 포함되고 다섯 번째 셀에는 숫자 10,000이 포함됩니다. 우리가 원했던 것.



2. 목록에서 요소 제거

목록에서 요소를 제거하는 것은 요소를 삽입하는 것과 비슷하지만 프로세스가 반대입니다.

목록에서 세 번째 요소를 제거해 보겠습니다. 이렇게 하려면 다음을 실행해야 합니다.

list.remove(3);

다음은 remove() 메서드에서 일어나는 일입니다.

1단계: 배열의 요소는 4번째 위치에서 시작하여 배열의 시작 방향으로 1개 요소만큼 이동(복사)됩니다.

목록에서 요소 제거

2단계: 변수 값이 size1씩 감소합니다.

목록 2에서 요소 제거

배열 끝에 회색으로 표시된 일부 값이 있다는 점에 유의하십시오. 기술적으로 이것은 쓰레기입니다. 가비지 수집을 방해하지 않으려면 제거해야 합니다 .

3단계: 쓰레기 치우기

목록에서 요소 제거 3



3. Java에서 목록 작업의 실제 예

목록 작업의 몇 가지 예를 작성해 보겠습니다.

1에서 20까지의 범위에 있는 모든 짝수를 나열합니다.

암호 노트
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);


모든 인덱스에 대해 1목록 객체를 생성합니다 20
. 인덱스가 2나머지 없이 나눌 수 있는 경우
목록에 추가합니다.

이제 목록의 모든 요소를 ​​화면에 표시해 보겠습니다.

암호 노트
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
목록 객체 만들기
모든 인덱스에 대해 반복합니다. 1숫자 20

2나머지 없이 나눌 수 있는 경우
목록에 추가합니다 .

0부터 목록 크기까지 반복합니다
. 각 요소를 화면에 표시합니다.

요소 제거:

이제 4로 나눌 수 있는 모든 요소를 ​​제거해 보겠습니다. 목록에서 요소를 제거하면 나머지 요소의 위치가 즉시 변경됩니다.

암호 노트
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
리스트 객체를 생성합니다.

모든 인덱스에 대해 반복합니다 1. 20
인덱스가 2나머지 없이 나눌 수 있는 경우
목록에 추가합니다

. 0부터 목록 크기까지 반복 합니다
. 목록의 요소가 4나머지 없이 나눌 수 있는 경우:

a) 제거 요소
b) i루프의 다음 반복에서 동일한 인덱스를 얻도록 카운터를 줄입니다.

목록에서 마지막 3개 요소를 제거해야 한다고 가정해 보겠습니다.

잘못하는 방법은 다음과 같습니다.

암호 노트
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
목록 개체 만들기

목록에는 10개의 요소가 있습니다. 2, 4, 6, ... 20



n = 10
n - 3 = 7(목록에 9개의 요소가 남아 있음)
n - 2 = 8(목록에 8개의 요소가 남아 있음)
n - 1 = 9(목록에 7개의 요소가 남아 있음)

7번째와 8번째 요소를 제거한 후에는 8개의 요소만 목록에 남습니다. 즉, 9번째 요소를 삭제할 수 없으며 프로그램에서 오류가 발생합니다.

요소를 제거하는 올바른 방법은 다음과 같습니다.

옵션 1 옵션 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

각 제거 작업 후 요소가 하나씩 이동하므로 끝이나 다른 일관된 위치에서 요소를 제거해야 합니다.