컬렉션 프래임워크라는 것은 다른 말로는 컨테이너라고도 부릅니다.
자바의 5버전부터 나온 것으로써 데이터 군을 저장하는 클래스들을 표준화한 설계를 뜻합니다. 쉽게 말하면 값을 담을 수 있는 그릇이라고 생각해도 좋습니다.
자바에서는 다양한 상황에서 사용할 수 있는 다양한 컨테이너를 제공하는데 이것을 컬렉션 프레임워크라고 부릅니다.
아래와 같은 배열의 값을 표준화한 것이 컬레션 프레임워크입니다.
Array : String arryName[]= {"", ""};
int arryJumSu[] = {00, 00};
이러한 데이터군이 표준화 한 것입니다.
인터페이스의 콜렉션은 데이터군을 저장하기 위한 인터페이스 입니다.
자주 쓰이는 List<E>, Set<E>의 형태의 군이 쓰입니다.
또한, 인터페이스 Map<K, V>등이 대표적으로 데이터를 저장하기 위해 쓰입니다.
List<E> 인터페이스
리스트 인터페이스는 인덱스를 가지고 있기 때문에 데이터의 중복을 허용하는 데이터군입니다. 아래는 자주 사용하는 메소드입니다.
List<E>의 메소드
add(E e) -> 엘리먼트의 요소를 추가시킴
get(int index) -> 해당하는 인덱스값의 엘리먼트를 반환해줌
size() -> 숫자에 저장된 값을 반환
List<E> 인터페이스를 상속받는 클래스
Vector<E> -> 동기화를 하고 데이터를 저장
ArrayList<E> -> 동기화를 하지 않고 데이터를 저장
Set<E> 인터페이스
Set 인터페이스는 인덱스를 가지고 있지 않기 중복을 허용하지 않습니다.
Set<E>의 메소드
add(E e) -> 엘리먼트의 요소를 추가시킴
cleart() -> 모든 엘리먼트를 초기화 시킴
iterator() -> 엘리먼트의 순서를 정함
size() -> 숫자에 저장된 값을 반환
Map<K, V> 인터페이스
Map 컬렉션은 키와 벨류값으로 나타내어 집니다. 키 값은 중복될 수 없지만 벨류값은 중복을 허용하기 때문에 일반적으로 ArrayList 클래스를 이용해서 데이터의 값을 저장할 수 있습니다.
Map<K, V>의 메소드
get(Object Key) -> Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.
put(K key, V value) -> Associates the specified value with the specified key in this map (optional operation).
size() ->숫자에 저장된 값을 반환
entrySet() -> Set<Map.Entry<K,V>>을 반환합니다.
이러한 기능들을 이용한 예제를 살펴보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import java.util.*; public class GamokGradeSelEx01 { StudentDB db = new StudentDB(); UserObj obj = new UserObj(); HashSet<StudentDTO> dtoL = new HashSet<StudentDTO>(); void setData() { for (int i = 0; i < db.name.length; i++) { dtoL.add(new StudentDTO(db.name[i], db.score[i][0], db.score[i][1], db.score[i][2])); } } void getData(int num) { if (num == 0) { num = dtoL.size(); } //HashSet클래스를 이용해서 dtoL의 변수에 저장(반환형이 Iterator 임) //그 값을 iter의 값에 넣어서 hasNext메소드 실행 //그렇게 되면 반환형이 boolean값이기 때문에 while문에 의해 계속 확인 Iterator<StudentDTO> iter = dtoL.iterator(); while (iter.hasNext()) { StudentDTO dto = (StudentDTO) iter.next(); String name = dto.getName(); int kor = dto.getKor(); int eng = dto.getEng(); int mat = dto.getMat(); double sum = (kor + eng + mat); System.out.printf("%s\t\t%d\t\t%d\t\t%d\t\t%.2f\n", name, kor, eng, mat, sum); } } void printData() { setData(); System.out.println("이름\t\t\t국어\t\t영어\t\t수학\t\t합계"); obj.mLine(2, 80); getData(0); obj.mLine(2, 80); } public static void main(String[] args) { GamokGradeSelEx01 gg = new GamokGradeSelEx01(); gg.printData(); } } | cs |
일단 기본적으로 다른 클래스들의 기본적인 데이터를 받아와서 실행한 것입니다.
주로 자세히 봐야할 부분은 HashSet이라는 클래스로 StudentDTO(데이터의 getter, setter 부분)의 값을 가져와서 Iterator의 형태로 반환하며 그 값을 Iterator의 iter의변수에 저장한 뒤에 그 값들이 거짓이 될때까지 계속 출력하는 것입니다.
여기서 Iterator의 뜻은 반복적으로 전체의 값을 순서대로 지정해서 해당하는 값을 출력한다는 의미입니다.
그렇기 때문에 setter된 데이터의 값들을 특정한 순서에 맞게 계속해서 출력됨을 확인할 수 있습니다.
'Programming > Java Spring' 카테고리의 다른 글
[Java] Integer List int 배열로 변환하는 방법 (0) | 2022.01.25 |
---|---|
[Java] Java 8 LocalDateTime 직렬화 역직렬화 오류 해결 방법 (0) | 2021.07.24 |
[Java] HashSet 사용 방법 및 개념 (0) | 2021.06.28 |
[알고리즘 / Java] 선택 정렬(Selection Sort)에 대해서 (0) | 2018.03.05 |
[Java / 설치] Eclipse 설치 및 Apache Tomcat 설치 및 연동하기 (0) | 2017.08.16 |