- List인터페이스의 메소드
기능 | 메소드 | 설명 |
객체 추가 | boolean add(E 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) | 주어진 객체를 삭제 | |
객체 정렬 | void sort(Comparator c) | 지정된 비교자로 List를 정렬 |
List subList(int from, int to) | 지정된 범위(from~to)에있는 객체를 리턴 |
- ArrayList
- List인터페이스의 구현클래스
- 데이터(객체)의 저장공간으로 배열을 사용 (인덱스로 객체를 관)
- 배열과의 차이점? ArrayList는 저장용량을 초과한 객체들이 들어오면 자동으로 저장용량이 늘어난다 → 메모리 낭비, 비효율적인 메모리 사용
- 모든 종류의 객체를 저장할수있다. (객체가 Object타입으로 변환되어 저장)
- 기존의 Vector를 개선한 것으로 구현원리가 기능적으로 동일
//String을 저장하는 ArrayList를 생성
List<String> list=new ArrayList<String>();
//객체 추가
list.add("java");
list.add("abc");
//["java", "abc"]
//객체 삭제
list.remove(1);
//["java"]
- 객체를 추가하면 0부터 차례대로 저장된다. 특정 인덱스의 객체를 삭제하면 뒤 인덱스부터 앞으로 1씩 당겨지고, 특정 인덱스에 객체를 삽입하면 해당 인덱스부터 1씩 밀려난다.
- Vector
- ArrayList와 다른점? Vector는 동기화된 메소드로 구성되어있음
- LinkedList (연결리스트)
- (배열과 달리) 불연속적으로 존재하는 데이터를 연결
- 객체를 제거하거나 삽입할때, 앞뒤링크만 변경되고 나머지 링크는 변경되지 않는다. (추가, 삭제 기능 향상)
- 데이터의 추가: 한번의 Node객체 생성과 두번의 참조변경만으로 가능
- 데이터의 삭제: 단 한번의 참조변경만으로 가능
- 데이터가 많을수록 데이터 접근성이 나쁘다 →이중연결리스트로 접근성 향상
- →검색, 범위검색, 정렬기능 향상 → TreeMap → TreeSet
- ArrayList vs LinkedList 실행성능 비교
- 순차적으로 추가/삭제하는 경우는 ArrayList가 빠르다
- 비순차적으로 중간에 추가/삭제하는 경우는 LinkedList가 빠르다
- 접근시간(검색)은 ArrayList가 빠르다
728x90
반응형
'Java Tutorial' 카테고리의 다른 글
[Java] 람다식 (0) | 2023.03.14 |
---|---|
[Java] Set컬렉션 (0) | 2023.02.19 |
[Java] 컬렉션 프레임워크 (Collection Framework) (0) | 2023.02.16 |
[Java] 제네릭스 (Generics) (0) | 2023.02.16 |
[Java] 객체 지향 프로그래밍 (Object Oriented Programming) (0) | 2023.02.10 |