List<E> 인터페이스
- 자료구조객체에 객체(데이터)를 저장했던 순서 그대로 다시 꺼낼 수 있다.
- 중복에 대해서는 확인하지 않는다.
- 각각의 저장소에 index가 부여된다. index를 이용해서 자료구조객체에 저장된 데이터를 액세스할 수 있다.
- index와 관련된 메소드가 추가되어있다. (add 매개변수, get, remove, set)
🖋️ 주요 메소드
- Collection<E> 인터페이스의 추상메소드, 그리고 add와 관련된 기능을 제공한다.
- boolean add(int index, E e)
- boolean addAll(int index, Collection<E> collection)
- E get(int index)
- E set(int index, E e)
- E remove(Object o)
🖋️ 주요 구현 클래스
- ArrayList<E>
- 가변길이 배열을 이용해서 데이터를 저장하는 자료구조객체
- 순서대로 저장하고, 순서대로 조회해서 사용하는 환경에서 사용하기 좋다.
- 자료구조객체의 중간에 객체를 삽입하거나, 자료구조객체의 중간에 저장된 객체를 삭제하는 일이 잦은 환경에서는 처리속도가 느리다.
- 주요 메소드
- Vector<E>
- ArrayList와 사용방법, 구현내용이 완전 같다.
- 차이점: multi-thread 환경에서 안전하게 사용할 수 있는 자료구조객체
- LinkedList<E>
- 자료구조객체의 중간에 객체를 삽입하거나, 자료구조객체의 중간에 저장된 객체를 삭제하는 일이 잦은 환경에서 비교적 처리속도가 빠르다.
- FIFO(선입선출): Queue<E> 인터페이스를 구현하는 객체이다.
- 주요 메소드
- Stack<E>
📌 List<E> 구현객체 용례
자료를 저장하기 위한 객체로는 일반적으로 ArrayList<E>를 사용한다.
하지만 반환값, 참조변수, 매개변수 타입은 인터페이스 타입인 List<E>로 설정한다.
- 인터페이스 타입을 보고 객체의 형식을 알 수 있다.
- 느슨한 결합으로 여러 종류의 리스트 객체를 받을 수 있다.
List<E> x = new ArrayList<>();
List<E> x = new LinkedList<>();
List<E> x = new Vector<>();
<aside>
💡 향상된for문은 자료구조 객체에 저장된 모든 객체를 중간 삭제 없이 처음부터 끝까지 반복처리할 때 사용한다.
그러나 향상된for문 내에서 저장된 객체를 삭제하는 작업은 할 수 없다.
⇒ 반복처리 중 특정 객체를 삭제하기 위해서는 반복자(Iterator) 객체
에서 수행을 처리한다.
</aside>