Back-end/JAVA,Spring

컬렉션 프레임워크(collection framework)란? - List vs Map

cheersHena 2018. 10. 18. 16:10
반응형

컬렉션 프레임워크(collection framework)란 


다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미. 

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

컬렌션 프레임워크는 자바 인터페이스를 사용하여 구현된다.


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

  • List 인터페이스

  • Map 인터페이스

주요 인터페이스의 간략한 특징

인터페이스설명구현 클래스
List<E>순서가 있는 데이터의 집합으로, 데이터의 중복을 허용함.Vector, ArrayList, LinkedList, Stack, Queue
Map<K, V>

키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없음.

이때 키는 중복을 허용하지 않지만, 값은 중복될 수 있음.

HashMap, TreeMap, Hashtable, Properties




List 컬렉션 클래스

List 인터페이스를 구현한 모든 List 컬렉션 클래스 특징

  •  저장 순서가 유지.

  •  같은 요소의 중복 저장을 허용. 

 

대표적인 List 컬렉션 클래스 

1. ArrayList<E>

2. LinkedList<E>

3. Vector<E>

4. Stack<E>


예제

ArrayList<Integer> arrList = new ArrayList<Integer>();

 

// add() 메소드를 이용한 요소의 저장

arrList.add(40);

arrList.add(20);

arrList.add(30);

arrList.add(10);

 

// for 문과 get() 메소드를 이용한 요소의 출력

for (int i = 0; i < arrList.size(); i++) {

    System.out.print(arrList.get(i) + " ");  --> 40 20 30 10 

}

 

// remove() 메소드를 이용한 요소의 제거

arrList.remove(1); --> 40 30 10 

 

// Enhanced for 문과 get() 메소드를 이용한 요소의 출력

for (int e : arrList) {

    System.out.print(e + " "); --> 10 30 40 

}

 

// Collections.sort() 메소드를 이용한 요소의 정렬

Collections.sort(arrList); --> 10 30 40 

 

// iterator() 메소드와 get() 메소드를 이용한 요소의 출력

Iterator<Integer> iter = arrList.iterator();

while (iter.hasNext()) {

    System.out.print(iter.next() + " ");   --> 10 30 40

}

 

// set() 메소드를 이용한 요소의 변경

arrList.set(020);  //0번방에 20 set 

 

for (int e : arrList) {

    System.out.print(e + " ");  --> 20 30 40 

}

 

// size() 메소드를 이용한 요소의 총 개수

System.out.println("리스트의크기 : " + arrList.size());  --> 리스트의크기: 3 



Map 컬렉션 클래스


Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value)을 사용

키(key)란 실질적인 값(value)을 찾기 위한 naming 역할.

순서를 유지하지 않고 값은 중복될수 있지만 키는 중복을 허용하지 않고 유일해야한다. 

대표적인 Map 컬렉션 클래스

1. HashMap<K, V>

2. Hashtable<K, V>

3. TreeMap<K, V>


HashMap<K, V> 클래스

HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나

JDK 1.2부터 제공된 HashMap 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠름. 


예제

HashMap<StringInteger> hm = new HashMap<StringInteger>();

 

// put() 메소드를 이용한 요소의 저장 ( list 의 add역할) 

hm.put("삼십"30);

hm.put("십"10);

hm.put("사십"40);

hm.put("이십"20);

 

// Enhanced for 문과 get() 메소드를 이용한 요소의 출력

System.out.println("맵에 저장된 키들의 집합 : " + hm.keySet());

for (String key : hm.keySet()) {

    System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));

}


--> 

맵에 저장된 키들의 집합 : [이십, 삼십, 사십, 십]

키 : 이십, 값 : 20

키 : 삼십, 값 : 30

키 : 사십, 값 : 40

키 : 십, 값 : 10

 

// remove() 메소드를 이용한 요소의 제거

hm.remove("사십");


// iterator() 메소드와 get() 메소드를 이용한 요소의 출력

Iterator<String> keys = hm.keySet().iterator();

while (keys.hasNext()) {

    String key = keys.next();

    System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));

}

 -->

키 : 이십, 값 : 20

키 : 삼십, 값 : 30

키 : 십, 값 : 10

 

// replace() 메소드를 이용한 요소의 수정 (list의 set)

hm.replace("이십"200); 

 

for (String key : hm.keySet()) {

    System.out.println(String.format("키 : %s, 값 : %s", key, hm.get(key)));

}


-->

키 : 이십, 값 : 200

키 : 삼십, 값 : 30

키 : 십, 값 : 10

 

// size() 메소드를 이용한 요소의 총 개수

System.out.println("맵의 크기 : " + hm.size());


-->

맵의 크기 : 3




반응형