[day14] java-basic : List

1 분 소요

List 특징

  • 순서가 있고 중복을 허용한다.

  • List는 인터페이스이므로 객체 생성이 불가하다.

  • 그래서 List는 ArrayList나 LikedList로 구현해야 한다.(구현클래스)

  • LinkedList의 장점은 순서를 가지고 있기 때문에 루프를 통해 모든 데이터에 접근하기가 편이하다.

  • 반면, LinkedList에서 앞쪽은 빨리 검색되지만 뒷쪽을 검색하면 속도가 느려질 수 밖에 없다는 단점이 있다.

  • List는 0부터 순차적으로 모든 자료를 탐색하기 때문에 검색 시, 최악의 시간복잡도는 O(N)이다.

  • 그래서 검색을 목적으로 했을 경우에는 List는 적합하지 않다.

List 메소드

  • 배열을 기반으로 만들어졌다.

  • 구현클래스끼리는 호환이 가능하다.

  • add() : 데이터를 순차적으로 차곡차곡 입력받는 것이다. 데이터를 넣으면 true, 못 넣으면 false를 반환한다.

  • get(int index) : index에 해당하는 데이터를 알려준다.

  • size() : 배열에 들어있는 전체 데이터의 갯수를 반환해준다.

  • remove(int index) : index위치의 데이터를 삭제하고 동적으로 남은 데이터들의 index를 변경한다.

  • remove(Object o) : o라는 객체의 데이터를 삭제한다. 중복 데이터가 있다면 0번지부터 검색해서 앞쪽의 데이터 하나만 지운다.

  • clear() : list에 들어있는 데이터를 모두 다 지워서 사이즈를 0으로 만든다.

  • boolean contains(Object o) : 데이터 o가 있는지 없는지 boolean형태로 반환한다.

  • boolean isEmpty() : 데이터가 존재하는지 체크한다.

  • addAll(Collection c) : 기존 등록된 콜렉션 뒷부분에 추가할 콜렉션의 전체 데이터를 추가한다.

  • iterator() : iterator객체를 반환한다.

  • toArray() : 리스트가 가지고 있는 모든 요소를 고정된 배열에 저장한다.

Iterator(순환자) 주요 메소드

  • 순환자는 순차적으로 접근하도록 만들어진 객체이다.(= 이전 버전의 enumerate와 같은 기능이다.)

  • next() : 데이터추출한다.

  • hasNext() : 추출할 다음 데이터의 존재여부를 판단

  • 맨 처음에 Iterator는 -1번지 index를 가르킨다.

  • hasNext()를 통해 다음 데이터가 있으면, next로 데이터 추출 후 Iterator가 1번지로 옮겨간다.

  • 또 hasNext()를 통해 다음 데이터가 있으면, next로 데이터 추출 후 Iterator가 2번지로 옮겨간다.

  • 반복하다가 hasNext()를 통해 다음 데이터가 없으면, next를 수행하지 않으면 된다.