[Java] 컬렉션 프레임워크에 대한 이해

2017. 9. 19. 09:38·Programming/Java Spring
728x90
반응형

컬렉션 프래임워크라는 것은 다른 말로는 컨테이너라고도 부릅니다. 

자바의 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();
    }
}
Colored by Color Scripter
cs


일단 기본적으로 다른 클래스들의 기본적인 데이터를 받아와서 실행한 것입니다. 


주로 자세히 봐야할 부분은 HashSet이라는 클래스로 StudentDTO(데이터의 getter, setter 부분)의 값을 가져와서 Iterator의 형태로 반환하며 그 값을 Iterator의 iter의변수에 저장한 뒤에 그 값들이 거짓이 될때까지 계속 출력하는 것입니다.

여기서 Iterator의 뜻은 반복적으로 전체의 값을 순서대로 지정해서 해당하는 값을 출력한다는 의미입니다. 

그렇기 때문에 setter된 데이터의 값들을 특정한 순서에 맞게 계속해서 출력됨을 확인할 수 있습니다.

728x90
반응형
저작자표시 (새창열림)

'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
'Programming/Java Spring' 카테고리의 다른 글
  • [Java] Java 8 LocalDateTime 직렬화 역직렬화 오류 해결 방법
  • [Java] HashSet 사용 방법 및 개념
  • [알고리즘 / Java] 선택 정렬(Selection Sort)에 대해서
  • [Java / 설치] Eclipse 설치 및 Apache Tomcat 설치 및 연동하기
이프로그
이프로그
리뷰, 개발, 일상을 기록하는 블로그
    반응형
    250x250
  • 이프로그
    이프로그의 IT이야기
    이프로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • Programming (111)
        • C# WPF (11)
        • Java Spring (16)
        • JavaScript & TypeScript (5)
        • Git (9)
        • Database (5)
        • Etc (42)
      • 생활상식 (24)
      • 리뷰 (8)
      • 주식 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      이슈 트래킹
      Apache Kafka
      투자
      dynamicresource
      서버 관리
      분산 메시징 시스템
      docker
      Java
      XAML
      DevOps
      ES6
      자바스크립트 트릭
      웹 개발
      소프트웨어 개발
      javascript
      클라우드 네이티브
      데이터 파이프라인
      rest api
      협업 도구
      데이터 바인딩
      C# WPF
      데이터베이스 성능
      마이크로서비스
      재테크
      주식투자
      WPF
      java8
      클라우드 컴퓨팅
      Kubernetes
      투자전략
    • 최근 댓글

    • 최근 글

    이프로그
    [Java] 컬렉션 프레임워크에 대한 이해
    상단으로

    티스토리툴바