728x90

컬렉션 프레임워크

컬렉션 프레임워크란 프로그램 구현에 용이한 자료구조와 알고리즘을 구현해 놓은 라이브러리이다.

java.util 패키지에 구현되어 있고 개발에 필요한 시간과 노력을 절약해준다.

Collection 인터페이스와 Map 인터페이스로 구성되어있다.

 

 

컬렉션 인터페이스

단일 객체의 관리를 위한 인터페이스.

리스트 인터페이스

순차적인 자료를 관리하기 위한 인터페이스로 ArrayList, Vector, LinkedList가 있다.

 

 

ArrayList와 Vector

둘다 배열에 관련된 클래스이다.

차이점은 벡터는 멀티쓰레드 프로그래밍에서 동기화를 제공하기 때문에 단일쓰레드에서 오버헤드가 발생한다.

주로 ArrayList를 사용한다.

 

 

ArrayList와 LinkedList

둘다 순차적인 자료를 관리하는 클래스.

ArrayList는 논리적 순서와 물리적 순서가 동일하다 즉 배열이다.

그러나 LinkedList는 논리적으로 순차적이라도 물리적으론 그렇지 않다. 즉 임의의 공간들이 연결된 연결 리스트이다.

 

Stack과 Queue

stack은 후입선출로 나중에 들어온 자료가 먼저 나간다. push, pop으로 자료를 넣고 빼고, 제일 후에 들어온 자료를 top으로 부른다.

Queue는 선입선출로 먼저 들어온 자료가 먼저 나간다. 즉 선착순의 개념과 같다. enqueue, dequeue를 통해 자료를 넣고 빼고, 

제일 앞의 자료를 front, 뒤의 자료를 rear라고 부른다.

 

 

Set 인터페이스

List와 달리 순서가 없다. 즉 중복을 허용하지 않는다.

get() 메소드가 제공되지 않기 때문에 iterator를 통해 순회해야한다.

저장 순서와 출력 순서가 다를 수 있다.

아이디, 주민번호같이 유일한 값을 관리할 때 사용한다.

HashSet이나 TreeSet 클래스가 있다.

 

HashSet

중복을 허용하지 않기 때문에 equals()와 hashCode() 메소드를 재정의해야한다.

 

TreeSet

정렬에 사용되는 클래스이다.

중복없이 오름차순이나 내림차순으로 객체를 정렬한다.

내부는 이진 검색 트리로 구현되어있다. 

객체의 비교를 위해 Comparable이나 Comparator 인터페이스를 구현해야한다.

 

Comparable은 CompareTo() 메소드를 구현해야하는데 자기 자신과 매개 변수를 비교한다.

Comparator는 Compare() 메소드를 구현하고 두 개의 매개변수를 비교한다.

Comparator가 구현된 객체를 선언할 때 매개변수로 넣어줘야한다.

Comparator 구현시 선언방법.

주로 Comparable을 더 많이 사용하며, 이미 Comparable이 구현되었을 시 Comparator를 구현한다.

 

 

맵 인터페이스

key와 value 쌍으로 된 객체를 관리하기 위한 인터페이스다.

key는 중복될 수 없으며 key를 이용해 검색, 삭제할 때 용이한 자료구조이다.

key가 되는 객체는 유일성을 보장하기 위해 equals()와 hashCode() 메소드를 재정의 해야한다.

 

HashMap

가장 일반적으로 사용하는 구조.

TreeMap

key 객체를 정렬하여 key-value를 pair로 관리한다.

key로 쓰이는 객체에 Comparable과 Comparator 인터페이스를 구현해야하는데 Integer 등과 같이 이미 구현된 인터페이스는 구현할 필요가 없다.

728x90

'프로그래밍 > Java' 카테고리의 다른 글

[Java] 람다식  (0) 2020.02.06
[Java] 내부 클래스  (0) 2020.02.06
[Java] 제너릭(Generic)  (0) 2020.02.04
[Java] String, Wrapper 클래스  (0) 2020.02.04
[Java] Object 클래스  (0) 2020.02.03

+ Recent posts