Haekt‘s log

[JAVA] Collection Framework 본문

언어/JAVA

[JAVA] Collection Framework

Haekt 2022. 10. 4. 01:00

 

Collection Framework 은 다수의 데이터를 쉽고,

효과적으로 다루기 위해, 표준화된 방법을 제공하는 클래스들을 모아놓은 집합이다.

 

쉽게 생각하면, 크기 지정 필요없는 편리한 배열이라고  생각하면 된다.

 

이것을 사용하면 배열의 단점인 길이고정을 해결할수 있다.

 

java.util.Collection 에 속해있어, 상단에 import java.util.* 을 입력해 사용할 수 있다.

 


Collection Framwork의 주요 인터페이스는 다음과 같다.

  1. List
  2. Set
  3. Map

이 중에서 List와 Set 인터페이스는 모두 Collection 인터페이스를 상속받지만,

구조상의 차이로 인해 Map 인터페이스는 별도로 정의한다.

 

 

 

- List, Set, Map 의 구현 클래스


TCP school.com

*<E> : 사용자가 타입을 정함.  ex) Vector<String> 

*<K, V> : 키와 값을 뜻함 ex) <Integer, String>

 

 

*List<E>


List 는 데이터의 순서가 있어, 들어온 순서대로 저장된다. 데이터의 중복이 가능하다.

 

List에 2, 3, 5, 4, 1, 1 을 넣으면, 배열 번호가 생기며 2 는 [0], 3은[1], 5는[2], 4는[3] 이런 순서대로 들어가

 

구현 클래스로는 Vector, ArrayList 등이 있다.

 

*순서가 있다는 뜻은 숫자 순서대로 들어간다는 뜻이 아님.  말그대로 들어온 순서대로 저장된다는 뜻

 

 

 

*Set<E>


Set은 데이터의 순서가 없어 정렬되어 저장된다. 데이터의 중복이 불가능하다.

 

Set에 2, 3, 5, 4, 1, 1 을 넣으면, 넣은 순서 상관없이 정렬되고, 중복은 제거되어 1, 2, 3, 4, 5  로 들어간다.

 

구현 클래스로는 HashSet, TreeSet이 있다.

 

 

 

*Map<K , V>


Map은 키를 통해 저장하므로, 데이터의 순서가 없이 저장된다. 키의 중복은 불가능 하나, 값의 중복은 가능하다.

 

K 는 Key , V 는 Value이다. 

 

구현 클래스로는 HashMap, TreeMap 등이 있다.

 

 

 

- List, Set, Map 예시   (Vector, HashSet, HashSet)

 

import java.util.*;

public class v1 {

	public static void main(String[] args) {
		
		Vector<Integer> v=new Vector<Integer>();  // List의 구현 클래스중 하나
		HashSet<Integer> hs=new HashSet<Integer>();  // Set의 구현 클래스중 하나
		HashMap<Integer,String> hm=new HashMap<Integer, String>(); // Map의 구현 클래스중 하나
		
		v.add(2);
		v.add(1);
		v.add(14);
		v.add(1);
		
		hs.add(2);
		hs.add(1);
		hs.add(14);
		hs.add(1);
		
		hm.put(1, "BTS");
		hm.put(2, "Highlight");
		hm.put(3, "NCT");
		
		System.out.println("\nv size :"+v.size());
		System.out.println("v :"+v);
		System.out.println("v[0] :"+v.get(0));
		System.out.println("v[1] :"+v.get(1));
		System.out.println("v[2] :"+v.get(2));
		System.out.println("v[3] :"+v.get(3));
		
		
		
		System.out.println("\nhs size :"+hs.size());
		System.out.println("hs :"+hs);
		
		
		System.out.println("\nhm size : "+hm.size());
		System.out.println("hm : "+hm);
		System.out.println("hm[1] :"+hm.get(1));
		System.out.println("hm[2] :"+hm.get(2));
		System.out.println("hm[3] :"+hm.get(3));
		
		
	
	}

}

 

-결과

 

 

* v : 순서 있음. 중복 가능

* hs : 순서 없음. 중복 불가

* hm : 순서없음. 키는 중복불가, 값은 중복가능

* v : Vector,  hs : HashSet,  hm : HashSet

 

 

 

 

Vector, HashSet, HashSet에 대한 자세한 정보는 아래 링크에서 살펴보자.

Vector (Java SE 18 & JDK 18) (oracle.com)

HashSet (Java SE 18 & JDK 18) (oracle.com)

HashMap (Java SE 18 & JDK 18) (oracle.com)

 

 

'언어 > JAVA' 카테고리의 다른 글

[JAVA] Vector 의 사용법  (0) 2022.10.04
[JAVA] 배열 선언 방법  (1) 2022.10.04
[JAVA] 추상 메소드 abstract란?  (0) 2022.10.03
[JAVA] interface란?  (1) 2022.10.03
[JAVA] 접근 제어  (2) 2022.10.03
Comments