| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 디자인 패턴
- 정리
- 자바스크립트
- java
- 자바
- 서버
- 미니정리
- 프런트엔드
- BACK-END
- JavaScript
- MySQL
- 코드테스트
- node.js
- 백엔드
- spring
- 코드 테스트
- 스프링부트
- jsp
- 프론트엔드
- 프로그래머스
- SQL
- oracle
- 오라클
- 스프링
- 데이터베이스
- Next.js
- jpa
- 쿼리
- 알고리즘
- web
- Today
- Total
참치코더의 꿈 메모장
2021/08/23 Java - 컬렉션 프레임워크 List 컬렉션 본문
자바는 널리 알려져 있는 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록
인터페이스와 구현 클래스를 java.util 패키지에서 제공한다.
이들을 총칭해서 컬렉션 프레임워크라고 부른다.
List 컬렉션
List 컬렉션은 배열과 비슷하게 객체를 인덱스로 관리한다.
배열과의 차이점은 저장 용량이 자동으로 증가하며 객체를 저장할때 자동 인덱스가 부여된다.
또한 추가, 삭제, 검색을 위한 다양한 메소드들이 제공된다.
List 컬렉션은 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조한다.
따라서 동일한 객체를 중복 저장할 수 있다.
* null도 저장이 가능하며, 이 경우 해당 인덱스는 객체를 참조하지 않는다.
List 컬렉션에서 공통적으로 사용 가능한 List 인터페이스의 메소드
| 객체 추가 | boolean add(E e) | 주어진 객체를 맨 끝에 추가한다. |
| void add(int index, E element) | 주어진 인덱스에 객체를 추가한다. | |
| E set(int index, E element) | 주어진 인덱스에 저장된 객체를 리턴한다. |
|
| 객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 조사한다. |
| E get(int index) | 주어진 인덱스에 저장된 객체를 리턴한다. |
|
| boolean isEmpty( ) | 컬렉션이 비어 있는지 조사한다. | |
| int size( ) | 저장되어 있는 전체 객체 수를 리턴한다. |
|
| 객체 삭제 | void clear( ) | 저장된 모든 객체를 삭제한다. |
| E remove(int index) | 주어진 인덱스에 저장된 객체를 삭제한다. |
|
| boolean remove(Object o) | 주어진 객체를 삭제한다. |
ArrayList
ArrayList는 List 인터페이스의 대표적인 구현 클래스이다.
List<E> list = new ArrayList<E>( );
ArrayList를 생성하기 위해서는 저장할 객체 타입을 E 타입 파라미터 자리에 표기하고, 기본 생성자를 호출하면 된다.
*ArrayList의 E 타입 파라미터를 생량하면 왼쪽 List에 지정된 타입을 따라 간다.
*기본 생성자로 ArrayList 객체를 생성하면, 내부에 10개의 객체를 저장할 수 있는 초기 용량을 가지게 된다.
*저장되는 객체 수가 늘어나면 용량이 자동으로 증가한다.
*빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList를 사용하는 것이 바람직 하지 않다.
*특정 인덱스에 객체를 추가하거나 제거하는 일이 빈번하다면 LinkedList를 사용하는 것이 좋다.
*객체를 찾거나 맨 마지막에 객체를 추가하는 경우에는 ArrayList가 더 좋은 성능을 발휘한다.
Vector
Vector는 ArrayList와 동일한 내부 구조를 가지고 있다.
List<E> list = new Vector<E>( );
ArrayList와 다른 점은 Vector은 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에
Vector의 메소드들을 실행할 수 없고, 하나의 스레드가 메소드 실행을 완료해야만 다른
스레드가 메소드를 실행할 수 있다.
LinkedList
LinkedList는 List 구현 클래스이므로 ArrayList와 사용 방법은 똑같은데, 내부 구조가 다르다.
ArrayList는 내부 배열에 객체를 저장해서 관리하지만 LinkedList는 인접 참조를 링크해서 체인처럼 관맇나다.
LinkedList 에서 특정 인텍스의 객체를 제거하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않는다.
List<E> list = new LinkedList<E>( );
List<E> list = new LinkedList<>( );
'JAVA' 카테고리의 다른 글
| 2021-08-25 Java - 호텔 방 예약 프로그램 CRUD 과제 (Map 사용) (0) | 2021.08.25 |
|---|---|
| 2021/08/24 Java- 컬렉션 프레임워크 Set (0) | 2021.08.24 |
| 2021/08/14 Java - 상속 (0) | 2021.08.15 |
| 2020/08/11 Java - 패키지와 접근 제한자 (0) | 2021.08.11 |
| 2021/08/10 Java - 인스턴스 멤버와 정적 멤버 (0) | 2021.08.10 |