코드네임 :
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> 예제
'👾Android > JAVA' 카테고리의 다른 글
JAVA - 컬렉션 프레임워크 : Map<K,V> (0) | 2024.06.05 |
---|---|
JAVA - 컬렉션 프레임워크 : Set<E> (1) | 2024.06.05 |
JAVA - 기본 API -String, Object, Wrapper / Scanner (0) | 2024.05.23 |
자바 퀴즈 (0) | 2024.05.21 |
JAVA - interface 인터페이스 (0) | 2024.05.21 |