JAVA - 컬렉션 프레임워크 : List<E>
이 부분은 학교 수업 못 알아듣겠어서 혼공자 보고 공부함 ㅎㅎ..
컬렉션 프레임워크란?
컬렉션 : 객체의 저장
프레임워크 : 사용방법을 정해놓은 라이브러리
즉, 사용 방법을 정리 해놓은 라이브러리
- 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> 예제

