컬렉션 프레임워크_List

김예인·2023년 5월 6일

백엔드 공부일지

목록 보기
17/43
post-thumbnail

컬렉션 :

자바에서 컬렉션은 객체들을 담을 수 있는 '자료 구조'
여러 데이터를 그룹으로 묶어놓은 것


📒 컬렉션 프레임워크 :

컬렉션에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 등의 동작을 수행하는 편리한 인터페이스, 메서드들을 미리 정의하여 제공


Lsit

  • 데이터의 순서 유지, 중복 저장 가능
  • 배열과 같이 객체를 일렬로 늘어놓은 구조
  • 인덱스로 관리
  • List 인터페이스를 구현한 클래스 : ArrayList, Vector, LinkedList, Stack

📁 List 인터페이스 공통 메서드

객체 추가

add(인덱스, 객체요소) : 주어진 인덱스에 객체를 추가 // void
addAll(인덱스, 컬렉션) : 주어진 인덱스에 컬렉션을 추가 //boolean
set(인덱스, 객체요소) : 주어진 위치에 객체를 저장 // Object

객체 검색

get(인덱스) : 주어진 인덱스에 저장된 객체를 반환 // Object
indexOf(객체), lastIndexOf(객체): 순방향/역방향 탐색 후 객체의 위치를 반환 // int
listIterator() : List의 객체를 탐색할 수 있는 ListIterator 반환
listIterator(인덱스) : 주어진 index부터 탐색할 수 있는 ListIterator 반환
subList(인덱스A, 인덱스B) : 인덱스A부터 인덱스B에 있는 객체를 반환 // List

객체 삭제

remove(인덱스) : 주어진 인덱스에 저장된 객체를 삭제하고 삭제된 객체를 반환 // Object
remove(객체) : 주어진 객체를 삭제 // boolean

객체 정렬

sort(비교자) : 주어진 비교자(comparator)List를 정렬 // void

| ArrayList :

List 인터페이스를 구현한 클래스

  • 객체가 인덱스로 관리됨
  • 크기가 고정되어 저장용량이 변경 불가한 배열과 달리, 초과 시 자동 확장
  • 데이터의 순서 유지
  • 특정 인덱스의 객체를 제거하면 모두 앞으로 1씩 당겨짐
  • 데이터의 순차 처리, 데이터 읽기 시 강점
ArrayList<타입 매개변수> 객체명 = new ArrayList<타입 매개변수>(초기 저장 용량);

💻 예시

ArrayList<String> container1 = new ArrayList<String>();
// String 타입의 객체를 저장하는 ArrayList 생성
// 초기 용량이 인자로 전달되지 않으면 기본적으로 10으로 지정

| LinkedList

  • 데이터가 불연속적으로 존재하나, 서로 연결(link)되어 있음
    불연속적 : 데이터(요소)가 메모리상에서 연속적인 위치에 저장되지 않고, 각 요소가 다음 요소를 가리키는 링크(참조)를 통해 연결되어 있는 구조
  • 각 요소(node)들은 자신과 연결된 이전 요소 및 다음 요소의 주소값과 데이터로 구성
  • 데이터 삭제 시 링크를 끊고, 추가 시 링크를 연결하여 참조하게 만든다
  • 중간 위치 데이터 처리에 강점
  • 데이터 검색은 느림
// Linked List를 생성하여 list에 할당
LinkedList<String> list = new LinkedList<>();

profile
백엔드 개발자 김예인입니다.

0개의 댓글