List 자바 직접구현

서버란·2024년 9월 2일

CS 지식

목록 보기
3/25
  • List 인터페이스
public interface List<E> extends Iterable<E> {

    void add(E item);

    E get(int index);

    int size();

    boolean isEmpty();

    void clear();

    void remove(int size);
}

  • ArrayList 클래스
import java.util.Arrays;
import java.util.Iterator;

@SuppressWarnings("unchecked")
public class ArrayList<E> implements List<E> {

    private E[] elements;
    private int index = 0;

    public ArrayList() {
        this.elements = (E[]) new Object[50];
    }

    @Override
    public void add(E item) {
        this.elements[index++] = item;
    }

    @Override
    public E get(int index) {
        return this.elements[--index];
    }

    @Override
    public int size() {
        return this.index;
    }

    @Override
    public boolean isEmpty() {
        return this.index == 0 ? true : false;
    }

    @Override
    public void clear() {
        Arrays.fill(elements, null);
        index = 0;
    }

    public void remove(int index) {
        for (int i = index - 1; i < this.index; i++) {
            this.elements[i] = this.elements[i + 1];
            this.elements[i + 1] = null;
        }
        this.index--;
        // this.elements[--this.index] = null;
    }

    @Override
    public Iterator<E> iterator() {
        // return Arrays.stream(this.elements).iterator();
        return Arrays.stream(this.elements).filter(x -> x != null).iterator();
    }
}
  • Main 클래스
public class Main {
    public static void main(String[] args) {

        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");

        for (String string : list) {
        System.out.println(string);
        }
    }
}
profile
백엔드에서 서버엔지니어가 된 사람

0개의 댓글