[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된 데이터의 값들을 특정한 순서에 맞게 계속해서 출력됨을 확인할 수 있습니다.

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

'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이야기
    이프로그
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Programming (111)
        • C# WPF (11)
        • Java Spring (16)
        • JavaScript & TypeScript (5)
        • Git (9)
        • Database (5)
        • Etc (42)
      • 생활상식 (24)
      • 리뷰 (8)
      • 주식 (12)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

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

    • 최근 글

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

    티스토리툴바