본문 바로가기
프로그래밍/Java

49. Java ArrayList

by 꼼꼼한 에프큐피 2023. 3. 7.

1. ArrayList

  1) 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다.

  2) Vector는 자체적으로 동기화처리가 되어 있지만, ArrayList는 동기화 처리가 되어 있지 않다.

  3) List 인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.

  4) 데이터의 저장공간으로 배열을 사용한다. 즉, 배열기반으로 되어 있다.

 

2. ArrayList 메서드

  1) 생성자는 다음과 같다.

    ① ArrayList()

    ② ArrayList(Collection c) : ArrayList에 값을 넣는다.

    ③ ArrayList(int initalCapcity) : ArrayList 길이 초기화 한다.

  2) 추가하는 건 다음과 같다.

    ① boolean add(Object o) : ArrayList에 객체를 추가한다.

    ② void add(int index, Object element) : ArrayList에 지정한 위치(index)에 값을 추가한다.

    ③ boolean addAll(Collection c) : ArrayList에 Collection이 갖고 있는 객체를 추가한다.

    ④ boolean add(int index, Collection c) : ArrayList에 지정한 위치(index)에 Collection이 갖고 있는 객체를 추가한다.

  3) 삭제는 다음과 같다.

    ① boolean remove(Object o) : ArrayList에 지정한 객체를 삭제한다.

    ② Object remove(int index) : ArrayList의 지정한 위치(index) 를 삭제한다.

    ③ boolean removeAll(Collection c) :ArrayList의 Collection에 있는 객체들을 삭제한다.

    ④ void clear() : ArrayList의 모든 객체 삭제한다.

  4) 그 외 메서드는 다음과 같다.

    ① int indexOf(Object o) : ArrayList의 객체를 검색한다.(순방향에서 검색한다.) 못 찾으면 -1을 반환한다.

    ② int lastIndexOf(Object o) : ArrayList의 객체를 검색한다.(역방향에서 검색한다.) 못 찾으면 -1을 반환한다.

    ③ boolean contains(Object o) : ArrayList에 객체가 존재하는지 확인한다.

    ④ Object get(Object o) : ArrayList의 객체를 읽어서 반환한다.

    ⑤ Object set(int index, Object element) : 특정 위치에 있는 객체를 변경한다.

    ⑥ List subList(int fromIndex, int tolndex) : 지정된 범위(fromIndex부터 toIndex)에 있는 객체를 반환한다. 그 후 새로운 List로 만든다.

    ⑦ Object[] toArray() : ArrayList에 저장된 객체를 객체배열(Object[])로 반환한다.

    ⑧ Objcet[] toArray(Object[ ] a) : 지정된 배열에 ArrayList의 객체를 저장해서 반환한다.

    ⑨ boolean isEmpty() : ArrayList가 비어있는지 확인한다.

    ⑩ void trimToSize() : ArrayList의 빈공간을 제거한다.

    ⑪ int size() : ArrayList의 개수를 반환한다.

 

3. ArrayList 삭제

  1) ArrayList는 삭제될 때 해당 인덱스의 다음 위치 인덱스가 덮어쓴다.

   즉, 0, 1, 2, 3, null 순서로 ArrayList가 있다고 하면, 1을 지우면 0, 2, 3, null, null 로 구성이 된다.

   따라서 순차적으로 돌면서 앞에서부터 ArrayList의 값을 지우면, 모든 데이터가 삭제되지 않는 문제가 있다.

   이를 예방하기 위해서 끝의 인덱스부터 삭제해야 한다.

댓글


"); wcs_do();