자바에서 컬렉션 프레임워크란
프로그래밍시 유용한 자료구조나 알고리즘을 클래스와 메서드로 정리해 둔것이다.

자료구조로는 대표적으로
배열, 리스트, 스택, 큐, 트리, 해시

알고리즘 몇가지로는
정렬, 탐색, 최대 최소검색이 있다.

리스트표현과 유용한 메서드들을 정리해둔 예를 보자.

(리스트 표현)


< > 표시는 어제 확인한 제네릭이다.
또 리스트는 배열로 만들 수 있고, 연결리스트(LinkedList)로 만들 수 있다.

위 코드는 배열을 이용한 리스트이다.
자세한 자료구조 내용은 언급하지 않겠다.
(필요시 검색해보면 많이 나온다.)




(리스트에 정수를 추가하는 코드)


보면 Integer Wrapper 클래스를 이용한다.


(get() 메서드)



리스트에서 제공하는 get 메서드는 () 괄호 안의 인덱스에 있는 데이터를 얻을 수 있다.




(결과 모습)


배열을 이용하지 않는
연결리스트 표현도 가능하다.

아래는 LinkedList 의 표현코드이다.



(연결리스트 코드)


위 코드를 보면
Iterator 라는 놈이 나왔다.
이 Iterator 라는 놈은 Interface이다.
반복하는 경우에 생성해서 이용하면 좋은 메서드들이 많다.

위 코드에서 보는 것처럼 .hasNext() 함수는 다음에 값이 있는지 확인하는 boolean 반환 메서드이고
next() 는 다음 값으로 넘어가는 함수이다.

*Hash Set
해쉬 알고리즘을 이용하는 집합단위이다.
먼저
코드를 보면




(HashSet 사용 코드)



(실행화면)



실행 화면에 보듯이 해쉬집합은
순서대로 입력되지 않는다.
순서는 신경쓰지않고 저장한다. 또 동일한 값은 저장하지 않는다.

해쉬에 관한 자세한 내용은 언급하지 않겠다.
(자료구조에 관한 내용은 알고있으리라 가정하고 넘어가겠습니다.)



(해쉬 집합)




(실행화면)



화면을 보면 중복된 데이터들은 빠져있는 것을 확인 할 수 있다.


자료구조 트리를 이용한 집합이 있다.
TreeSet이다.



(TreeSet 사용 코드)



(실행화면)



실행화면을 보면 값이 정렬되어 저장되어있음을 확인 할 수 있다.

오름차순인지 내림차순인지 기준은 각자 다르지만
확실한건 숫자의 크기로 순서가 정해져 있다는 것은 분명하다.

그러면 이 순서를 역순으로 하는 방법이 있을까?
-> 반복자 Iterator를 바꿔준다. ( descendingIterator() 함수로 )


(역순, 실행화면)



* TreeMap
Map이란 key-value 방식의 저장방법이다.
트리라는 자료구조로 저장한다. 즉, 크기비교하여 순서있게 저장한다.

아래는 사용 예시이다. 입력을 보면 key와 value가 들어가는 것을 확인할 수 있다.



(TreeMap 사용 코드)



(실행 화면)



실행 화면을 보면 트리의 특성처럼
순서가 있게 저장된것을 확인 할 수 있다.

* 전화번호관리 프로그램 07 단계

-> Ver 07에서는
이러한 프레임워크를 이용한다.
자료구조를 이용해 자료를 관리한다.
해쉬를 이용해 검색기능을 향상 시켰고, 중복된 값은 저장받지 않도록 향상했다.

캡쳐 화면은 다음 08단계에서 한번에 보이겠다.

(*참조 - 난 정말 JAVA를 공부한 적이 없다구요, 윤성우)



+ Recent posts