코드타이핑 6/8

메인클래스
package do_it_java_ch2;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("ArrList<E>클래스 설계");
ArrList<Integer> arr = new ArrList<Integer>();
arr.add(5);
arr.add(4);
arr.add(-1);
System.out.println("ArrList요소수: " + arr.size());
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
System.out.println();
arr.add(2, 100);
arr.show();
arr.remove(1);
arr.show();
}
}
ArrList클래스
package do_it_java_ch2;
public class ArrList<E> {
private E[] a;
private int size;
ArrList() {
a = (E[]) new Object[50];
size = 0;
}
public void add(E newItem) {
a[size++] = newItem;
}
E get(int pos) {
return a[pos];
}
public int size() {
return size;
}
public void add(int pos, E newItem) {
for (int i = size - 1; i >= pos; i--)
a[i + 1] = a[i];
a[pos] = newItem;
size++;
}
public void remove(int pos) {
for (int i = pos; i < size - 1; i++) {
a[i] = a[i + 1];
}
size--;
}
public void show() {
for (int i = 0; i < size; i++) {
System.out.print(a[i] + " ");
}
System.err.println();
}
}
위 코드는 ArrList라는 제네릭 컬렉션 클래스를 구현한거임 제네릭을 사용해 클래스를 정의함으로써, ArrList클래스로 다양한 타입의 요소를 저장할 수 있는 컬렉션을 생성함
private E[] a;
-> Arrlist클래스 내부에 E타입 배열 a가 선언
for (int i = size - 1; i >= pos; i--): -> size - 1부터 시작하여 pos까지 역순으로 반복하는 반복문입니다. 이 반복문은 배열의 요소들을 한 칸씩 오른쪽으로 이동시키는 역할을 합니다. 이렇게 함으로써 새로운 요소를 삽입할 위치를 확보합
-> a[i + 1] = a[i];: 반복문 내부에서 현재 인덱스 i의 값을 다음 인덱스 i + 1로 이동시킵니다. 이렇게 함으로써 배열의 요소들이 한 칸씩 오른쪽으로 이동