스노우보드 참 좋아하는데 맨날 키보드 앞에만 있네

Java의 컬렉션 프레임워크(Collection Framework) 본문

개발/Java, SpringFramework

Java의 컬렉션 프레임워크(Collection Framework)

워너-비 2018. 5. 22. 16:26

자바의 컬렉션 프레임워크란?


자바의 컬렉션 프레임워크(Collection Framework)는 다수의 데이터를 처리하기 위한 표준화된 방법을 제공하는 클래스의 집합을 말한다.

즉, 데이터를 저장하는 자료구조와 처리하는 알고리즘을 구조화하여 클래스로 구현한 것이다.

다른말로 컨테이너(Container)라고도 부르며, 자바의 인터페이스(Interface)를 사용하여 구현할 수 있다.


컬렉션 프레임워크의 인터페이스

컨렉션 프레임워크의 인터페이스는 크게 Collection과 Map으로 구성된다.

Collection의 하위 인터페이스로 Set, List, Queue가 있다.


Collection

1. Set : HashSet, LinkedHashSet, TreeSet

2. List : ArrayList, Vector, LinkedList

3. Queue : PriorityQueue, LinkedList


Map

Map은 Key와 Value의 쌍으로 값을 저장하는 컬렉션이다.

SortedMap, TreeMap, Hashtable, LinkedHashMap, HashMap 이 있다.


개인적으로 유용하게 사용하는 몇 가지를 아래에 정리하였다.


ArrayList

ArrayList는 동적으로 크기가 조절되는 배열이다. 새 원소를 삽입할때, 크기가 늘어난다.

1
2
3
4
5
6
7
public static void main(String[] args){
    ArrayList myArr = new ArrayList();
    myArr.add("one");
    myArr.add("two");

    System.out.println(myArr.get(0));
}



Vector

Vector는 ArrayList와 비슷하지만 동기화(synchronize)되어 있다는 차이가 있다.

1
2
3
4
5
6
7
public static void main(String[] args){
    Vector myVect = new Vector();
    myVect.add("one");
    myVect.add("two");

    System.out.println(myVect.get(0));
}



LinkedList

자바에서 제공하는 LinkedList 클래스이다.


순환자(iterator)의 사용법을 잘 알아두자.

iterator는 인터페이스 Collection에 정의되어 있기때문에 Collection을 구현하는 모든 컬렉션 프레임워크는 iterator 메서드를 사용할 수 있다.

iterator를 이용하면 for 문을 이용하는 것처럼 데이터에 순차적으로 접근할 수 있다.


1
2
3
4
5
6
7
8
9
10
public static void main(String[] args){
    LinkedList myLinkedList = new LinkedList();
    myLinkedList.add("two");
    myLinkedList.addFirst("one");
    Iterator iter = myLinkedList.iterator();

// hasNext() : 반복할 데이터가 더 있으면 true, 없으면 false를 반환
    while(iter.hasNext()){
// next() : 다음 데이터를 반환
        System.out.println(iter.next());
    }
}



HashMap

HashMap은 Map인터페이스를 사용하여 구현한다. 해싱(hashing) 검색 방법을 사용하여 많은 양의 데이터를 검색할 때 성능이 뛰어나다.

1
2
3
4
5
6
7
public static void main(String[] args){
    HashMap map = new HashMap();
    map.put("one""uno");
    map.put("two""dos");
 
    System.out.println(map.get("one"));
}



Comments