본문 바로가기

Algorithm

Collection





Collection 개념


같은 타입의 참조 값을 저장하기 위한 자바 라이브러리 


- Set : 데이터 값의 중복을 허용하지 않고 순서도 가지지 않는다.

- List : 중복을 허용하고 순서를 가진다. 

- Map : Key와 Value의 형태로 저장한다.







Set의 종류 


Set에는 크게 HashSet과 SortedSet이 있습니다.


HashSet은 Set 인터페이스의 특성을 상속받기 때문에 데이터 값만을 받고 중복을 허용하지 않으며 순서도 중요하게 생각하지 않습니다.


SortedSet은 마찬가지로 Set인터페이스의 특성을 상속 받기 때문에 데이터 값만을 받고 중복을 허용하지 않지만, 정렬된 Set이기 때문에 순서를 중요하게 생각합니다.


또한 Set 중에서도 Linked ~~ 로 되어 있는 Set은 연결리스트 구조를 갖기 때문에 

각 노드를 연결되어 있고 그러기 때문에 입력되는 데이터의 순서도 중요하게 

생각합니다. 


예를 들어 LinkedHashSet 같은 경우 


LinkedHashSet<String> hashSet = new LinkedHashSet<String>(); 


hashSet.add( "1111");

hashSet.add( "1112 ");

hashSet.add( "1113 ");

hashSet.add( "1114 ");

hashSet.add( "1111 ");


이렇게 넣어주면 hashSet에는 "1111" 이 중복되기 때문에 지워줍니다. 

(한 번만 들어간다는 것이죠)


단, "1111" ~ "1114" 까지 입력한 순서를 기억하여 체크하게 됩니다.


대표 문제 [ 수강신청 ]


https://github.com/Haamseongho/Algorithm_Study_For_Java/blob/master/Algorithm_Study_For_Java/Algorithm/%EB%91%90%20%EB%B2%88%EC%A7%B8%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%20%EC%8A%A4%ED%84%B0%EB%94%94/src/%EC%88%98%EA%B0%95%EC%8B%A0%EC%B2%AD_13414.java



List의 종류 





ArrayList


- 속도가 빠르며 크기를 마음대로 조절할 수 있다

- 단방향 포인터 구조로 자료에 대한 순차적 접근이 가능

- 리스트 중간에 element를 제거할 경우 뒤에 있는 인덱스가 앞으로 당겨진다.


Vector


- ArrayList의 구형 버전 / 모든 메소드가 동기화 되어 있음


LinkedList


- 양방향 포인터 구조로 데이터 삽입 

- Stack , Queue , Dequeue에 많이 쓰인다.


https://docs.oracle.com/javase/7/docs/api/java/util/List.html




Map의 종류 



HashMap


- Map 인터페이스를 구현하기 위해 해시테이블을 사용한 클래스

- 중복을 허용하지 않고 순서를 보장하지 않는다.

- 키와 값으로 null 이 허용된다.


LinkedHashMap


- 기본적으로 HashMap을 상속받아 HashMap의 특성을 가지고 있음

- Map에 있는 엔트리들의 연결 리스트를 유지하므로 입력한 순서를 기억한다. 

(반복가능)



https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html



반응형

'Algorithm' 카테고리의 다른 글

회문 작성 알고리즘  (0) 2018.05.01
전체 탐색 알고리즘 소개  (0) 2018.04.30
시뮬레이션 문제  (0) 2018.04.30
그래프 탐색 알고리즘  (0) 2018.01.03
Dynamic Programming  (0) 2018.01.02