코드네임 :

JAVA - 컬렉션 프레임워크 : List<E> 본문

👾Android/JAVA

JAVA - 컬렉션 프레임워크 : List<E>

비엔 Vien 2024. 6. 4. 23:36

이 부분은 학교 수업 못 알아듣겠어서 혼공자 보고 공부함 ㅎㅎ..

 

컬렉션 프레임워크란?

컬렉션 : 객체의 저장 

프레임워크 : 사용방법을 정해놓은 라이브러리

즉, 사용 방법을 정리 해놓은 라이브러리

- java.util 파일에 존재 ( 불러올 때 import java.util.* 또는 import java.util.불러올놈이름 으로 )


 

[ List 컬렉션 ]

- 배열과 비슷하게 객체를 인덱스로 관리 (저장순서 존재)

- 저장 용량이 자동으로 증가 

- 객체 저장시 자동 인덱스 부여 

- 객체 자체를 저장하는게 아니라, 객체의 번지를 참조함

- 동일한 객체 중복 저장 시 동일한 번지를 참조함

- null도 저장 가능 - 이 경우 인덱스는 객체를 참조하지 않음

 

 

List 인터페이스 메소드

E 타입 파라미터 : 저장되는 객체의 타입을 List 컬렉션을 생성할 때 결정하거라 라는 뜻

 

 

List 컬렉션에 String 객체를 저장하고 삭제

 

 

for-each 문


 

ArrayList<E>

 

String을 저장하는 ArrayList 객체 생성

List<String> set = new ArrayList<String>();
List<String> set = new ArrayList<>(); // ArrayList의 E 타입(String 위치) 파라미터 생략 시 왼쪽 List에 지정된 타입 따라감

 

기본 생성자로 ArrayList 객체 생성시 내부에 10개의 객체를 저장할 수 있는 초기용량을 가지게 됨

저장 되는 객체 수가 늘어나면 용량이 자동으로 증가

 

객체 추가시 0번 인덱스부터 차례대로 저장됨

특정 인덱스의 객체를 제거(추가) 시 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로(뒤로) 1씩 당겨짐(밀려남)

 

 

ArrayList에 String 객체를 추가, 검색, 삭제하는 예

 


 

Vector<E>

ArrayList와 동일한 내부구조

- 동일한 타입의 객체 수집(collection)

- 메모리의 동적할당

- 데이터의 추가, 변경, 삭제 등의 메서드

List<E> set = new Vector<E>();
List<E> set = new Vector<>(); // Vector의 E 타입 파라미터 생략 시 왼쪽 List에 지정된 타입 따라감

 

 

ArrayList와 다른 점!

- Vector는 동기화된(synchronized) 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 Vector의 메소드를 실행할 수 없음

- 하나의 스레드가 메소드를 실행 완료해야만 다른 스레드가 메소드 실행 가능 -> 멀티스레드에 적합

ㄴ 멀티 스레드 환경에서 안전하게 객체를 추가, 삭제 가능

 

 

Vector<Integer> 예제