본문 바로가기
Java Tutorial

[Java] List컬렉션

by 미소5 2023. 2. 18.

컬렉션(Collections) 프레임워크

  • 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
반응형