본문 바로가기
JAVA

java 컬렉션(Collection)이란? (+ 예제)

by 자바비터 2022. 3. 29.

▶ 자바에서 컬렉션(Collection)이란?

: 컬렉션(Collection)은 자바에서 자료 구조를 구현한 클래스이다.

 

     

▶ 자바 컬렉션 프레임워크(Collection Framework) 구조

▶ 자바 컬렉션의 특징

- 자료구조로는 리스트(list), 스택(stack), 큐(queue), 집합(set), 등이 있다.

- 요소의 개수에 따라 크기 자동 조절

- 요소의 삽입, 삭제에 따른 요소의 위치 자동 이동

- 고정 크기의 배열을 다루는 어려움 해소

- 다양한 객체들의 삽입, 삭제, 검색 등의 관리 용이

- <> 제네릭을 이용해 저장될 데이터의 자료형을 정할 수 있다.

  

   

▶ 자바 컬렉션(Collrection) 리스트(List)

ArrayLIist

: 상당히 빠르고 크기를 마음대로 조절할 수 있는 배열

Vector

: ArrayList의 구형 버전으로 모든 메소드가 동기화 되어있음.

(요즘은 대부분 ArrayList를 사용한다고 한다.)

LinkedList

: 목록 끝에 원소를 추가하거나 끝에 있는 원소를 쉽게 제거할 수 있는 메소드 제공

스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임

  

  

▶ 자바 컬렉션(Collrection) 셋(Set)

HashSet

: 객체들이 순서 없이 저장되며 중복 저장하지 않음

TreeSet

: 정렬방법을 설정할 수 있음

    

  

▶ 자바 컬렉션(Collrection) 맵(Map)

HashMap

: 키(Key)와 값(value)의 쌍으로 구성되어 요소를 다루는 컬렉션, null값이 올 수 있음

TreeMap

: 정렬된 순서대로 키(Key)와 값(value)을 저장하여 검색이 빠름

  

  

▶ 자바 컬렉션(Collrection) 인터페이스에 선언된 추상 메소드

  

  

주요 컬렉션 예제 - ArrayList

import java.util.ArrayList;

//컬렉션 : 자바의 자료구조를 구현한 클래스
//배열과 유사한 다양한 배열 타입을 제공함
public class Ex13 {
	public static void main(String[] args) {
		//ArrayList객체
		//<> 꺽새(제네릭)을 이용해 저장될 데이터의 자료형을 정할 수 있다
		//꺽새 안쪽은 자료형 객체가 들어가야하므로, 랩퍼클래스로 쓰여야한다.
		ArrayList<String> al = new ArrayList<String>();
		//add : ArrayList 객체에 데이터를 저장하는 메소드이다
		//ArrayList의 장점은 저장 순서대로 데이터가 출력된다는 점이다
		al.add("구렁이");
		al.add("팔렁이");
		al.add("칠렁이");
		al.add("구렁이");
		al.add("구렁삼");
		al.add("구렁사");
		
		for(int i = 0; i < al.size(); i++) {
			System.out.println(al.get(i));
		}
		System.out.println("============");
        	//확장 for문으로 출력해보기
		for(String str : al)
			System.out.println(str);
	}
}

ArrayList 실행 결과 화면

 

 

▶ 주요 컬렉션 예제 - Vector

import java.util.Vector;

public class Vector01 {
	public static void main(String[] args) {
		Vector<Integer> v = new Vector<Integer>();
		v.add(5);
		v.add(4);
		v.add(-1);
		v.add(2, 100); //2 index에 100값 대입 2인덱스값은 3인덱스로 밀림
		//size : 벡터 내부에 저장된 데이터 수
		//Vector는 List계열이며 가변길이를 갖는 배열 객체
		System.out.println("벡터 내의 요소 객체 수 : " + v.size());
		//capacity : 벡터 내부 총 저장공간, 벡터는 변수의 개수가 증가함에 따라
		//10개씩 저장공간을 늘리는 특징이 있다.
		//데이터 저장공간을 별도로 정하지 않으면서도 정한 것과 같은 효과를 얻으려는 의도로 보인다.
		System.out.println("벡터의 현재 총량 : " + v.capacity());
		
		//벡터 내부에 저장된 데이터 출력
		for(int i = 0; i < v.size(); i++) {
			int n = v.get(i);
			System.out.println(n);
		}
		int sum = 0;
		for(int i = 0;i < v.size(); i++) {
			//elementAt : 해당 번호에 저장된 데이터를 호출한다. get과 유사하다.
			int n = v.elementAt(i);
			sum += n;
		}
		System.out.println("벡터에 있는 정수의 합 : " + sum);
	}
}

Vector 실행 결과 화면

 

 

▶ 주요 컬렉션 예제 - HashMap

import java.util.HashMap;
import java.util.Scanner;

public class HashMap01 {

	public static void main(String[] args) {
		//Map 객체도 자료구조형의 한 종류이고
		//키-값의 형태로 자료를 저장한다
		//그렇기 때문에 저장된 변수의 번호나 이런 것들이 중요하지 않다
		//HashMap 클래스는 대용량 자료를 검색하는데 뛰어난 능력을 발휘함
		HashMap<String, String> dic = new HashMap<>();
		//put 메소드를 활용해 키-값의 형태로 데이터를 저장한다.
		dic.put("baby", "아기");
		dic.put("love", "사랑");
		dic.put("apple", "사과");
		
		Scanner scanner = new Scanner(System.in);
		//while 내부에 true를 써 무한루프를 만듬
		while(true) {
			System.out.print("찾고 싶은 단어는? :");
			String eng = scanner.next();
			//if문을 활용해 조건을 만족하면 while문을 탈출하고 종료
			if(eng.equals("exit")) {
				System.out.println("종료합니다");
				break;
			}
			//영문명(키)을 통해 조회해 맞는 것이 있으면 한글(값)로 출력
			//eng값을 가져왔는데 dic데이터에 없으면 null값이 kor에 저장됨.
			String kor = dic.get(eng); 
			if(kor == null)
				System.out.println(eng + "는 없는 단어입니다.");
			else System.out.println(kor);
		}
		scanner.close();
	}
}

HashMap 실행 결과 화면

댓글