#.컬렉션(Collection)
-배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너
-안드로이드를 비롯한 자바 프로그램을 작성하는데 빼놓을 수 없는 도구
-제네릭이라는 기법으로 구현
#.컬렉션을 위한 자바 인터페이스와 클래스
-java.util 패키지가 다양한 컬렉션 인터페이스와 클래스 제공
-컬렉션 클래스(Collection<E>)는 개발자가 바로 사용할 수 있는 클래스
> Vector<E>와 ArrayList<E> - 가변 크기의 배열을 구현
> LinkedList<E> - 노드들이 링크로 연결되는 리스트를 구현
>Stack<E> - 스택을 구현
> HashSet<E> - 집합을 구현
->Collection<E>를 상속 받고, 단일 클래스의 객체만을 요소로 다룸
>HashMap<K, V>는 K(key)와 V(value)의 쌍으로 이루어지는 데이터를 저장, 키로 검색하는 컬렉션
#.컬렉션 특징
- 제네릭이라는 기법으로 만들어짐
- <E>,<K>,<V> 등이 항상 포함 = 타입 매개
-변수
>E 대신 Integer,String같은 구체적인 타입을 지정 = 특정타입만을 다루지 않고 여러 종류 타임으로 변신 가능
> 일반화 시킨 타입 혹은 제네릭 타입이라고 부름
-컬레션 요소는 객체들만 가능
> int, char, double 등의 기본타입의 데이터는 원칙적으로 컬렉션 요소로 불가능
ex) Vector<int> V = new Vector<int>(); //컴파일 오류
Vector<Integer> V = new Vector<Integer>(); //정상
#.제네릭의 기본 개념
-모든 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 타입 매개변수를 이용하여 선언하는 기법
-클래스 코드를 찍어내듯이 생산할 수 있도록 일반화(generic)시키는 도구
-Stack<E>의 E에 국체적인 타입을 지정하면, 지정된 타입만 다룰 수 있는 구체화된 스택이 됨
#.iterator
-컬렉션 순차 검색을 위해 사용
-Iterator<E>의 메소드
> boolean hashNext();
> E next();
> void remove();
ex)
Vector<Integer> V = new Vector<Integer>();
Iterator<Integer> if = v.Iterator(); //Iterator객체 리턴
int n = it.next(); //요소 리턴
결과
5
4
100
-1
벡터에 있는 정수 합 : 108
#.Collections 클래스 활용
- sort() - 컬렉션 요소들의 정렬
- reverse() - 반대 순으로 정렬
- max(), min() 최댓값과 최솟값 찾아내기
- binarySearch() 이진 검색
*컬렉션 클래스의 메소드는 모두 static 타입임으로 객체 생성할 필요없다.
결과
메트릭스->스타워즈->아바타->터미네이터->트랜스포머
트랜스포머->터미네이터->아바타->스타워즈->매트릭스
아바타는 3번째 요소입니다.
'JAVA' 카테고리의 다른 글
[Code]substring(), lastIndexOf() (0) | 2023.06.01 |
---|---|
[JAVA]Optional (0) | 2023.01.12 |
JAVA - 인터페이스와 추상클래스 비교 (0) | 2022.12.20 |
JAVA - 인터페이스 (0) | 2022.12.20 |
JAVA - 추상클래스 (0) | 2022.12.19 |