반응형
Java Collection
Java collection이란?
객체를 수집해서 저장하는 역할
Collection
- List : 순서 유지하고 저장, 중복 저장 O (ArrayList, Vector, LinkedList)
- Set : 순서 유지하지 않고 저장, 중복 저장 X (HashSet, TreeSet)
Map
- key, value 쌍으로 저장
- key는 중복 저장 X (HashMap, Hashtable, TreeMap, Properties)
List 컬렉션
- 객체를 일렬로 늘어놓은 구조
- 인덱스로 객체 관리
- 객체 자체를 저장 X, 객체의 번지를 참조
- ArrayList, Vector, LinkedList
ArrayList
- List 인터페이스의 구현 클래스
- ArrayList 객체는 인덱스로 관리
- 배열은 생성 시 크기 고정, ArrayList는 저장용량(capacity)초과 시 자동으로 늘어남(크기 변경 가능)
//ArrayList 생성법
//저장할 객체타입을 타입 파라미터에 표기
//기본생성자 호출
List<String> List = new ArrayList<String>();
ArrayList 생성 시 내부에 10개의 객체를 저장할 수 있는 초기 용량(capacirt)를 가짐.
//String 객체 30개를 저장할 수 있는 용량
List<String> list = new ArrayList<String>(30); //컬렉션 생성
list.add("홍길동"); //컬렉션에 객체 추가
String name = list.get(0); //컬렉션에서 객체 검색, 검색결과 홍길동
ArrayList를 고정된 객체들로 구성된 List를 생성해야할 때, Arrays.asList(T... a)메소드 사용
List<T> list = Arrays.asList(T... a);
List<String> list1 = Arrays.asList("홍길동", "김자바", "박한글");
T 타입 파라미터에 맞게 asList()의 매개값을 순차적으로 입력하거나 T[]배열을 매개값으로 준다.
Vector
- ArrayList와 동일한 내부 구조
- 생성 : 저장할 객체 타입을 타입 파라미터로 표기 후 기본생성자 호출
List<E> list = new Vector<E>();
ArrayList와 다른점?
Vector는 동기화된 메소드로 구성되어 잇기 때문에 멀티 스레드가 동시에 실행할 수 없고, 하나의 스레드가 실행을 완료해야 다른 스레드 실행이 가능.
LinkedList
- List 구현 클래스
- ArrayList와 사용 방법 같으나 내부 구조 다름
- ArrayList : 내부 배열에 객체를 저장해서 인덱스로 관리
- LinkedList : 인접 참조를 링크해서 체인처럼 관리
- 특정 인덱스 제거 시 앞뒤 링크만 변경, 나머지 링크 유지
- 생성 : 저장할 객체 타입 타입 파라미터에 표기, 기본 생성자 호출
List<E>. list = new LinkedList<E>();
끝에서부터 (순차적으로) 추가/ 삭제 시 = ArrayList가 빠름
중간에 추가 또는 삭제 시 = LinkedList가 빠름
Set 컬렉션
- 저장 순서 유지X
- 객체 중복 저장X, 하나의 null만 저장
- HashSet, LinkedHashSet, TreeSet
- 인덱스로 객체 검색해서 가져오는 메소드 X ➡️ 전체 객체 대상으로 한번씩 반복해서 가져오는 반복자(Iterator) 제공
- Iterator : Iterator 인터페이스를 구현한 객체
Set<String> set = ...;
Iterator<String> iterator = set.iterator();
- next() : Iterator에서 하나의 객체를 가져올 때 사용
- hasNext() : 가져올 객체가 있으면 true, 없으면 false 리턴
- remove() : Set 컬렉션에서 객체 제거
HashSet
- Set 인터페이스의 구현 클래스
- 생성 : 기본생성자 호출
Set<E> set = new HashSet<E>();
Map 컬렉션
- Key, value로 구성된 Entry 객체를 저장하는 구조
- 키는 중복 저장 X, 값은 중복 저장 O
- HashMap, Hashtable, LinkedHashMap, Properties, TreeMap
Map<String, Integer> map = ~;
map.put("홍길동", 30); //객체 추가
int score = map.get("홍길동"); //객체 찾기
map.remove("홍길동"); //객체 삭제
저장된 전체 객체를 대상으로 하나씩 얻고 싶을 경우?
1. ketSet()메소드로 모든 키를 Set 컬렉션으로 얻은 뒤, 반복자를 통해 키를 하나씩 얻고 get() 메소드를 통해 값을 얻기
2. entrySet()메소드로 모든 Map.Entry를 Set 컬렉션으로 얻은 뒤, 반복자를 통해 Map.Entry를 하나씩 얻고 getKey(), getValue() 메소드 이용하여 키, 값 얻기
반응형
'Language > Java' 카테고리의 다른 글
변수와 타입 (0) | 2022.07.23 |
---|---|
자바(Java) 시작하기 (0) | 2022.07.22 |